2013-07-01 4 views
0

내부에 탭이있는 대상을 포함하는 UIButton으로 UIView 하위 클래스를 만들었습니다. 선택기는 UIView 하위 클래스 내에 구현되고 인터페이스 작성기로 연결됩니다.UIView 하위 클래스의 Dealloc이 클래스 메서드 실행을 방지합니다.

하지만 도청 부모 뷰 컨트롤러에 addSubview를 실행할 때 버튼을

performSelector가 발생합니다 : withObject : withObject를 :] : 예를

(나는 ARC를 사용) I을 해제하기 위해 보낸 메시지 dealloc 메서드에서 콘솔 출력을 추가하고 viewDidLoad가 UIView 하위 클래스의 addSubview로 끝나면 바로 그 서브 클래스가 할당 취소됩니다.

어떻게 그런 상황을 방지 할 수 있습니까? 일부 전역 배열에 인스턴스를 추가하는 @property (nonatomic, retain)를 시도했습니다 ... 하지만 운이 없습니다.

강력한 참조가 남아 있지 않으므로 ARC가 객체를 재사용한다는 것을 알고 있지만 그 상황을 방지 할 수는 없습니다.

도움을 주시면 감사하겠습니다.

답변

0

View Controller 클래스에서 하위 뷰 클래스의 강력한 참조를 생성하면 문제를 해결하는 데 도움이 될 수 있습니다.

@property (strong , nonatomic) UIView *subclassName; 
+0

실제로 그 중 하나를 시도했지만 문제가 지속됩니다./ – Heps

+0

UIButton 참조를 어떻게 작성하고 있습니까? 또한 ViewController 객체의 참조를 어딘가에 생성하고 있습니까? 예, 당신은 그것을 어떻게 창조하고 있습니까? –

+0

처음에는보기에서 단추를 만든 다음 IBAction touchUpInside (몇 마우스 끌기)를 작성했습니다. 이제 @property (비 원자력, 강함)로 콘센트를 만들었지 만 상태. – Heps

0

하위 뷰로 추가하려는 버튼 (UIButton)에 대한 참조를 저장하고 있습니까?

+0

터치 업 내부에 링크 된 액션이있는 인터페이스 빌더가 추가되어 참조가 저장되어 작동해야합니다.하지만 여기에 뭔가가 없습니다. – Heps

+0

UIButton을 서브 클래 싱하지 않아도됩니다. 대신 Category –

+0

을 사용하십시오.하지만 UIButton을 서브 클래 싱하지 않습니다. UIView 하위 클래스입니다. 그러나 대상이있는 모든 객체는 UIView 하위 클래스 인스턴스가 addSubview 다음에 릴리스 될 때 실행할 수 없습니다. 이전에 작업 방식으로 사용자 지정 UIView를 만들었지 만 지금은 반복 할 수 없으며 이전 프로젝트에서 작동하도록 단서를 찾을 수 없습니다. – Heps

0

문제는 NIB를 클래스에 연결하는 데있었습니다.

UIView 개체를 연결하는 대신 클래스에 파일 소유자를 연결했습니다.

일반적으로 UIViewController로 펜촉을 사용할 때 파일 소유자를 UIViewController 클래스에 연결할 필요가 있습니다. 하지만 UIView 하위 클래스에서 작업 할 때 UIView 개체를 연결해야합니다.