2012-03-28 5 views
2

제 질문은 매우 간단합니다 : UIViewController가 nil로 설정되면 제스처 인식기와 KVO가 지워지나요?ARC - UIViewController가 nil로 설정된 경우 제스처 인식기 및 KVO가 처리됩니까?

사용자가 만들고 복잡한 UIViewController 기반 인스턴스를 삭제할 수있는 프로젝트가 있습니다. 이것들은 NSMutableArray에 저장됩니다.

방금 ​​인스턴스를 배열에서 삭제 한 다음 nil (불필요하다고 생각하는)으로 설정하면 인스턴스의 모든 @properties가 지워집니다 (다른 참조가 없다고 가정).

편집 나는 내가 KVOs을 관리하지 않는 경우 아래의 경고 (오류)를 얻을 - 그래서 나는 대답은 '아니오'

인스턴스 클래스 트랙의 0xce26d40이 키 동안 해제 된없는 것 같아요 가치 관측자들은 아직 등록되어있다. 관측 정보가 누출되어 다른 물체에 실수로 부착 될 수 있습니다. NSKVODeallocateBreak에 중단 점을 설정하여 디버거에서 여기서 중단합니다. 여기에 현재 관측 정보가있다 : ( 컨텍스트 : 0x0으로, 속성 : 0x7530300> 상황 : 0x0으로, 속성 : 0x75320f0>

답변

3

객체는 '@properties을'소유 (그들은 strong 또는 retain을) 것으로 가정. 뷰에 추가 된 제스처 인식기가 소유되어 있으므로 객체가 할당 해제되면 속성과 인식기가 해제되고 다른 사람이 소유하지 않으면 할당이 해제됩니다.

주요 가치 관찰자 및 알림 옵저버가 있어야합니다. 할당 해제되기 전에 수동으로 등록 해제됩니다.

+0

오케이 - 그건 의미가 있습니다. 감사! –

관련 문제