2014-11-03 1 views
0

블록 내부에서 참조되는 경우 블록이 자체를 보유한다는 것을 알고 있습니다. 하지만 내가 이렇게하면 :자체 변수를 사용하여 액세스 할 때 멤버 변수가 블록에 의해 유지 되나요?

NSLog (@ "% @", self.memberVariable);

memberVariable도 블록에 유지됩니까? 또는 그 블록에만 자기가 남아 있습니까?

미리 감사드립니다. 만약 블록 내의 오브젝티브 C 객체를 참조 기본적

답변

0

"액세스하는"유일한 변수는 self입니다. 블록은 수명을 범위에 묶은 유일한 변수이기 때문에 로컬 변수를 "캡처"합니다 (self는 로컬 변수로 간주됩니다). 속성 (실제로는 메소드 호출)과 인스턴스 변수는 다른 객체 포인터를 통해 항상 "액세스"되므로 수명이 해당 객체의 수명과 연관됩니다.

1

멤버 변수는 프로그램 가이드를 차단하는 retained.According하는 레퍼런스 카운트 된 환경에서

는, 그것은 유지된다. 객체의 인스턴스 변수를 단순히 참조하는 경우에도 마찬가지입니다. 그러나 개체 __block 저장소 유형 수정 자로 표시된 변수는 유지되지 않습니다. 입니다.

+0

개체에 __block 저장소 수정자를 넣으면 멤버 변수에도 적용됩니까? – Ideveloper