2011-01-12 13 views

risposta

10

Sì, è necessario copiare. Non perché siano autorelati, ma perché iniziano in pila. Si noti che i blocchi si comportano anche come normali oggetti Objective-C, in modo che è possibile copiare utilizzando il normale copy messaggio:

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

Oppure, se si dispone di una proprietà di blocco:

@property(copy) dispatch_block_t block; 

fissaggio non lo fa aiuto qui.

+2

Grazie, ho trovato anche questo fantastico articolo sull'argomento: http://cocoawithlove.com/2009 /10/how-blocks-are-implemented-and.html – brian

+1

Yup; e se usi 'copia', usa' release'. Se usi 'Block_copy()', usa 'Block_release()'. Non mescolarli. – bbum

+0

@bbum È sicuro usare 'Block_copy()' e 'autorelease'? Dovresti usare solo 'autorelease' con 'copy'? –

Problemi correlati