iOS부터 가능해진 블럭코드 ^{} (대충 이런형식의 처리로직?을 파라메터로 넘기는 방법) 에서 "ARC Retain Cycle Error " 라는 경고가 발생하는 경우가 있다.
Capturing 'self' strongly in this block is likely to lead to a retain cycle
ARC로 된 프로젝트에서 블럭코딩을 할 경우 블럭 밖에 선언된 변수가 블럭안에서 값이 변할때 위와같은 에러가 발생한다고 한다.
내자신도 블럭코드는 아직 지식이없어 자신있게 말할순 없지만...
어쨋든 해결방법은 문제의 변수를 __block 로 선언하면 경고가 사라진다.
만약 이런소스가 있다고 가정하면,
@implementation Hoge -(void)hogeMethod{ hogeHandler = ^(Fuga *fuga){ [self someMethod:fuga]; }; } @end
이런식으로 변경.
@implementation Hoge -(void)hogeMethod{ // 여기서self를 카피 __block Hoge *blockself = self; hogeHandler = ^(Fuga *fuga){ [blockself someMethod:fuga]; }; } @end
'코딩(プログラミング)' 카테고리의 다른 글
AdHoc배포시 아카이브파일(.ipa)이 안만들어지는 경우 해결법 (0) | 2013.08.15 |
---|---|
iOS에서 <Error>: Max open files: 78 에러원인은? (0) | 2013.08.12 |
블럭코드에서의 ARC Retain Cycle Error 해결방법 (0) | 2013.07.23 |
NSError카테고리를 이용한 자체에러정의하기 (0) | 2013.07.19 |
cpp 파일(C++)의 wrapper클래스 만들어 사용하기(2) (0) | 2013.07.18 |
XCode(Objective-C)상에서 cpp 파일(C++) 사용하기(1) (2) | 2013.07.11 |
TAG arc,
block code,
Capturing 'self' strongly in this block is likely to lead to a retain cycle,
Objective-C,
블럭코드,
코드 블럭,
코드블럭에러
댓글을 달아 주세요