2011-01-12 2 views

답변

10

예, 복사해야합니다. autoreleased이기 때문에가 아니라 스택에서 시작하기 때문입니다. 당신이 블록 속성이있는 경우

void storeBlockForLater: (dispatch_block_t) block 
{ 
    [someArray addObject:[[block copy] autorelease]]; 
} 

또는 : 당신이 정규 copy 메시지를 사용하여 복사 할 수 있도록 블록은 또한, 정기적으로 목표 - C 객체처럼 행동합니다

@property(copy) dispatch_block_t block; 

리테 이닝하지 않습니다 도와주세요.

+2

감사합니다. 주제에 대한 훌륭한 기사를 찾았습니다. http://cocoawithlove.com/2009 /10/how-blocks-are-implemented-and.html – brian

+1

예. 'copy'를 사용한다면'release'를 사용하십시오. 'Block_copy()'를 사용한다면'Block_release()'를 사용하십시오. 섞지 마. – bbum

+0

@bbum Block_copy()와 autorelease를 사용하는 것이 안전합니까? 'autorelease' 만'copy'와 함께 사용해야합니까? –

관련 문제