블록 내에서 자기를 캡처하는 것을 피하는 일반적인 패턴은 블록 외부에 약한 자기를 생성하고이를 사용하여 블록 내에서 "로컬에서 강한"버전의 자기 (내부 자기)를 생성하는 것입니다.약한 포인터를 강한 포인터에 할당하면 해당 개체가 복사됩니까?
__weak ClassX *weakSelf = self;
[someOtherObject methodThatTakesCOmpletionBlock: ^{
ClassX innserSelf = weakSelf; //innserSelf creation?
[someObject send:innerSelf.prop;}];
innserSelf creation
행이 실행되면 어떻게됩니까? 을 someOtherObject
으로 보내면 innerSelf
은 사본은입니다.
이 질문은 innserSelf 행이 실행될 때 일어나는 일에 초점을 맞 춥니 다. 나는 Strong reference to a weak references inside blocks을 보았지만이 점에 대해서는 언급하지 않았다.
@ Josh Caswell 답변으로 내 질문 중 하나가 해결되지 않았습니다. 'ClassX innserSelf = weakSelf;'행이 실행되면 어떻게됩니까? 자체 객체를 복사하고 참조를 유지합니다. 이 질문 만 편집했습니다. 경향 깃발을 제발 제거 할 수 있니? –
포인터를 지정하지 않으면 개체의 복사본이 만들어집니다. –
"포인터를 지정하지 않으면 복사본이 만들어지지 않습니까?"라는 의미는 무엇입니까? "포인터 할당은 복사하지 않습니다 **"라고 말하고 싶습니까? 그것이 복사본을 만들지 않는다면,이 내적 자체의 전체적인 점은 무엇입니까? 자아가 지적한 "기억의 조각"에 대한 강한 참고가 여전히있는 것 같습니다. –