2016-08-29 5 views
0

내가 개발중인 시계 앱이 ARC를 사용하지 않습니다. 그래서 각 인터페이스에있는 객체의 모든 속성을 아래와 같이 dealloc에 놓습니다.ARC가없는 WatchKit은 dealloc 일 때 충돌을 발생시킵니다.

-(void)dealloc { 

    [obj1 release]; 
    [obj2 release]; 
    ... 
    [super dealloc]; 
} 

인터페이스를 닫으면 (예 : 메인 인터페이스로 돌아 가기) 충돌이 발생합니다. 이게 왜 그렇게?

+0

* 내가 개발중인 시계 응용 프로그램은 ARC를 사용하지 않습니다. * ARC를 채택하지 않았기 때문에 수동으로 카운트를 참조하려고 시도 할 때 ARC를 더 어렵게 만듭니다 (더 많은 충돌 또는 누출을 유발할 수 있습니다) 도구가 자동으로 수행하도록하는 대신, b) 앞으로 포팅해야하는 오래된 코드를 작성하십시오. –

+0

시계 앱에 연결될 현재 프로젝트에 ARC가 없음을 선택하지 않았습니다. – GeneCode

+0

기존 iOS 앱이 ARC를 사용하지 않았기 때문에 새로운 시계 앱에서도 ARC를 사용할 수 없다는 의미는 아닙니다. 대상 설정 * 프로젝트 설정을 무시할 수 있습니다. 이렇게하면 시계 앱을 ARC 지원으로 컴파일 할 수 있으며 iOS 앱을 업그레이드하기 전까지 ARC를 계속 사용할 수 있습니다. –

답변

1

보유 및 해제는 클래스의 맥락에서 균형을 유지해야합니다. 아마 당신이 그 인스턴스 변수들 중 하나에 할당했을 때 당신은 보유하지 않았을 것이고, 따라서 그것은 과도한 것이다. 이 경우 좀비가 할당 취소 된 인스턴스에 메시지를 포착 할 수 있도록 시도 할 수 있습니다.