블록 내부에서 참조되는 경우 블록이 자체를 보유한다는 것을 알고 있습니다. 하지만 내가 이렇게하면 :자체 변수를 사용하여 액세스 할 때 멤버 변수가 블록에 의해 유지 되나요?
NSLog (@ "% @", self.memberVariable);
memberVariable도 블록에 유지됩니까? 또는 그 블록에만 자기가 남아 있습니까?
미리 감사드립니다. 만약 블록 내의 오브젝티브 C 객체를 참조 기본적
블록 내부에서 참조되는 경우 블록이 자체를 보유한다는 것을 알고 있습니다. 하지만 내가 이렇게하면 :자체 변수를 사용하여 액세스 할 때 멤버 변수가 블록에 의해 유지 되나요?
NSLog (@ "% @", self.memberVariable);
memberVariable도 블록에 유지됩니까? 또는 그 블록에만 자기가 남아 있습니까?
미리 감사드립니다. 만약 블록 내의 오브젝티브 C 객체를 참조 기본적
"액세스하는"유일한 변수는 self
입니다. 블록은 수명을 범위에 묶은 유일한 변수이기 때문에 로컬 변수를 "캡처"합니다 (self
는 로컬 변수로 간주됩니다). 속성 (실제로는 메소드 호출)과 인스턴스 변수는 다른 객체 포인터를 통해 항상 "액세스"되므로 수명이 해당 객체의 수명과 연관됩니다.
멤버 변수는 프로그램 가이드를 차단하는 retained.According하는 레퍼런스 카운트 된 환경에서
는, 그것은 유지된다. 객체의 인스턴스 변수를 단순히 참조하는 경우에도 마찬가지입니다. 그러나 개체 __block 저장소 유형 수정 자로 표시된 변수는 유지되지 않습니다. 입니다.
개체에 __block 저장소 수정자를 넣으면 멤버 변수에도 적용됩니까? – Ideveloper