2012-09-05 2 views

답변

0

짧은 대답, 아니요, 개체가 할당 취소되었는지 알 수있는 방법이 없습니다. 자세한 내용은 this question을 확인하십시오.

+0

ARC와 새로운'__weak' 변수를 고려하지 않았으므로 -1입니다. –

6

실제로 이것을 수행하는 유일한 방법은 __weak 포인터라고하는 ARC (및 iOS 5, 이전에는 작동하지 않음)를 사용하는 것입니다.

__weak 변수는 정의 상 보존되지 않습니다. __weak 변수가 대상을 유지하면 정의에 따라 자체를 해제 할 수 없습니다.

기본적으로 __weak 포인터는 할당 해제 될 때 NULL으로 자동 설정되는 변수입니다. 따라서, 당신은 객체가 해제되어 있는지 확인하기 위해이 같은 작업을 수행 할 수 있습니다이 쓸모없는 것으로 _weakRef 원인으로

일반적으로
__strong id object; // required so that the object doesn't get deallocated right away 
__weak id _weakRef; 

object = [NSObject new]; 
_weakRef = object; 

// do stuff with 'object' 

if (_weakRef) 
{ 
    // 'object' hasn't been deallocated yet, do something with it. 
} 

말하기, 당신은, 그러나, 객체에 강하고 약한 참조에 보유하지 않습니다 (objectnil으로 설정할 때 확인하십시오).

특히 프레임 워크를 만드는 경우에는 __weak 변수에만 기반한 디자인 패턴에주의해야합니다. iOS 5를 타겟 배포로 사용하는 것과 같이 '성가신 일'이라고 말하는 것은 없습니다.

이 게시물은 당신이 어떻게 작동하는지 약한 참조의 깊은 이해를 도왔 희망하고, 그렇지 않은 경우, 당신은 여기에 읽을 수있는 훌륭한 위키 피 디아 기사가 : 그 개체를 가정

http://en.wikipedia.org/wiki/Weak_reference

+1

+1이이 질문의 여러 중복에 대한 유일한 정답입니다. – OrangeDog

0

NSObject입니다 인스 트루먼 트에서 좀비 만 활성화하면됩니다. 그럼 당신이해야 할 일은 문제의 대상을 메시지로 보내는 것뿐입니다. 메시지를 보낼 때 대상이 죽었는지 알려줍니다.

관련 문제