iOS 5에서 자동 참조 계산을 배우려고합니다.이 질문의 첫 부분은 쉽습니다.
그것이 내가 않는 것이 정확 하지 ARC를 사용하는 경우 내의 dealloc에서 명시 적으로 해제 재산권 문을 작성해야합니까? 즉, 다음은 않는 것이 사실이다 NOT 명시적인 할당 해제를해야합니까?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
다음으로 중요한 질문은 ARC 릴리스 노트 로의 전환 문서의 내용입니다.
인스턴스 변수를 해제 할 필요는 없지만 (실제로는 불가능) 시스템 클래스 및 ARC를 사용하여 컴파일되지 않은 다른 코드에서 [self setDelegate : nil]을 호출해야 할 수도 있습니다.
이것은 ARC로 컴파일되지 않은 시스템 클래스를 어떻게 알 수 있습니까? 언제 나만의 dealloc을 작성하고 명시 적으로 보유 속성을 nil로 설정해야합니까? 속성에 사용 된 모든 NS 및 UI 프레임 워크 클래스에 명시 적 할당 해제가 필요하다고 가정해야합니까?
SO 및 다른 곳에는 수동 참조 추적을 사용할 때 자산의 백업 ivar을 해제하는 관행에 대한 풍부한 정보가 있지만 ARC를 사용할 때는 이에 대한 정보가 상대적으로 적습니다.
MyController : UIViewController
는 UIView를 만들고 소유하고보기의 델리게이트를 자체적으로 설정 하는 클래스가 있다는 것이다. 해당 뷰의 유일한 보유 소유자입니다. 컨트롤러가 할당 해제되면 뷰도 할당 해제됩니다. 그러면 델리게이트 포인터가 매달려 있는지 여부가 중요합니까?