2011-10-25 3 views
0

처음에 사용자 정의 클래스를 갖는 참조, 내가 ARC를 사용하고 난 정의의 UIViewController에 대한 참조를 필요로하는 사용자 정의 클래스를 아이폰 OS -의 UIViewController 객체의

iOS4 +

을 목표로하고있다. 내가 missunderstod 뭔가가 없다면 그 참조에 대한 속성을 retain 가지고 내 클래스 destructs 언제든지 UIViewController도 잘 파괴 것을 의미합니까? 또는 UIViewController가 할당 해제되도록 appdelegate (UIViewController를 만든 것)와 내 사용자 정의 클래스를 모두 할당 해제해야한다는 의미입니까?

그래서 나는 __unsafe_unretained 속성에 대해서도 읽었습니다. 내 사용자 정의 클래스는 UIViewController를 참조하기 위해 복잡성없이 간단하게 사용할 수 있습니까? appdelegate는 결국 UIViewController를 할당 해제 할 것이므로 포인터가 매달릴 위험이 없습니다.

감사

편집 : 사용자 정의 클래스가

답변

1

각 객체는 본질적으로 주위에 충실 할 필요가 있는지 여부를 결정하는 유지할 수있다을 중요한 경우 전체 과정을 통해 살 것이다 싱글 개체입니다. 이 경우 AppDelegate는 UIViewController를 이미 보유하고 있지만 (보유 수는 1) 사용자 정의 클래스가 UIViewController (보유 수 2)를 유지할 수 없다는 것을 의미하지는 않습니다. 따라서 두 번째 시나리오는 진실에 가깝습니다. 사용자 정의 클래스가 UIViewController를 소멸시키고 해제 할 때 보유 개수가 1로 떨어집니다. AppDelegate가 소멸 및 해제하면 개수가 0으로 떨어지고 객체가 삭제됩니다.

맞춤 클래스의 내부에 UIViewController를 할당 한 다른 bult-in 또는 사용자 정의 클래스에 할당하면 사용자 수를 계속 유지하면서 카운트가 계속 올라간 다음 각 객체로 다시 드롭됩니다 차례 차례로 그것의 관심사를 풀어 놓았다.

+0

알 수 있습니다. 내 사용자 정의 클래스에서 보유를 사용하는 단점이 있습니까? 또는 여전히 __unsafe_unretain을 사용해야합니까? 기본적으로 UIViewController에서 사용자 정의 클래스를 사용하여 메서드/변수에 액세스하고 있습니다. – KaiserJohaan

+0

retain을 사용해야합니다. 사용자 정의 클래스를 사용하는 동안 UIViewController가 손상되지는 않더라도 아무런 상처를 입지 않으며 올바른 방법입니다. 일반적으로 보유 및 릴리스 횟수가 일치하는 한 (순환 보유 루프를 만들지 않아도) 괜찮을 것입니다. –

+0

사용자 정의 클래스를 사용하여 UIViewController의 메서드와 변수에 액세스 할 때 @synchonrize도 함께 묶어야합니까? – KaiserJohaan