메인 대기열에서 작업을 실행하기 위해 dispatch_async 메소드를 사용하고 있습니다. 그러나 순환 유지의 원인 :dispatch_async 중첩 블록
self.test = ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", self);
});
};
이 사이클을 유지 만드는 이유를 제대로 얻을 수 아니다 :
다음은 코드입니다. 내 컨트롤러에는 dispatch_async 블록의 소유권이 없습니다. 이 같은 self
살아 번에 파견, 어쩌면 뭔가를 유지 할 수 있도록 내부 블록을 원하지 않는 경우
__weak typeof(self) weakSelf = self;
self.test = ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", weakSelf);
});
};
속성'test'는 클로저를 유지하고 클로저는'self'에 대한 참조를 포함합니다. 참조 자체는 블록에 있습니다. – Paulw11