Vorrei archiviare il blocco objective-c in una proprietà per un uso successivo. Non ero sicuro di come farlo, quindi ho cercato un po 'su google e ci sono pochissime informazioni sull'argomento. Ma alla fine sono riuscito a trovare la soluzione e ho pensato che potesse valere la pena di condividerlo con altri neofiti come me.Come memorizzare i blocchi nelle proprietà in Objective-C?
Inizialmente ho pensato che avrei dovuto scrivere manualmente le proprietà per utilizzare Block_copy & Block_release.
Per fortuna ho scoperto che blocks are NSObjects e - copy
/- release
equivale a Block_copy
/Block_release
. Quindi posso usare @property (copy)
per generare automaticamente setter & getter.
Eventuali duplicati di [? Posso usare blocchi di Objective-C come proprietà] (http://stackoverflow.com/questions/3935574/can-i-use-objective-c-blocks-as-properties) Questa domanda è più recente di quella lì. –
Codice di esempio completo, aggiornato fino alla data, spiegato semplicemente per i principianti: http://stackoverflow.com/a/20760583/294884 – Fattie
Per i nuovi lettori, questa domanda estremamente vecchia è ora felicemente estremamente passata. Devi solo dire ** @ property (copy) void (^ doStuff) (void); ** con niente più o meno della copia. ora questo è spiegato chiaramente in cristallo (compreso il perché) in un certo numero di punti nella mela doco. non potrebbe essere più semplice; questa è l'intera risposta. In effetti, l'intera questione è di valore solo storico poiché ora usi solo Swift. – Fattie