2011-07-07 6 views
18

Ho scaricato la versione di anteprima dello sviluppatore Xcode 4.2 e ho creato un'applicazione di cacao. Ma ho trovato una sintassi molto strana nella classe dei delegati:Cosa fa la parola chiave "strong"

@property (strong) IBOutlet NSWindow *window; 

Che cosa significa? E il compilatore non può nemmeno compilarlo.

Grazie in anticipo!

+2

Non posso dirvelo a causa della NDA, ma, dato che ci si trova nel Programma di sviluppo, leggere la Programmazione con le note di rilascio di ARC. Per inciso - questo è il motivo per cui non possiamo avere cose carine. – Abizern

+0

Wow - Non riesco a trovare nulla online su 'strong'. Sembra essere correlato a IBOutlets e in particolare se sono riferimenti forti o deboli, ma questo è tutto ciò che ho ottenuto. Quale messaggio di errore ricevi dal compilatore? –

+0

@Chris Gregg: non specificamente IBOutlets; è per le proprietà. La sessione WWDC 2011 (NDA'd) che introduce ARC lo copre; è probabilmente anche in almeno parte della documentazione della NDA. –

risposta

20

Indica che questa proprietà è una relazione forte, una proprietà. È la versione ARC della parola chiave retain nello stesso contesto.

E il compilatore non può nemmeno compilarlo.

È un codice ARC valido, quindi se i tuoi strumenti supportano ARC, sicuramente dovrebbero essere in grado di compilarlo.

Assicurarsi che si stia utilizzando Xcode 4.2 o versioni successive e che la scelta del compilatore del progetto sia impostata su Clang ("Compilatore LLVM Apple").

+0

Domanda tangenziale: in che modo ARC è "automatico" se lo sviluppatore deve ancora preoccuparsi dei riferimenti "forti" e "deboli"? Sembra che tutto ciò che hanno fatto sia sostituire 'retain' e' release' con qualcosa di ancora meno intuitivo. – aroth

+2

@aroth: Perché tutto ciò che devi fare è dichiarare se la proprietà è forte o debole (o copia). Non è necessario fare altro da allora in poi: non è necessario rilasciare l'oggetto in dealloc, non è necessario assicurarsi di mantenere (se forte) quando si assegna alla variabile di istanza, e si possono avere riferimenti deboli che diventano automaticamente nulli quando l'oggetto di riferimento muore. –

+0

@aroth: Non devi nemmeno preoccuparti se usi, ad esempio, 'stringWithFormat:' o 'alloc' e' initWithFormat: '; ARC sostiene le regole di gestione della memoria per te, con l'effetto netto che nessuno dei due perde o causa un arresto anomalo. –

3

Forte si riferisce al conteggio di riferimento automatico (ARC) che sta arrivando nel nuovo compilatore LLVM, parte di Xcode 4.2 quando viene rilasciato. Al momento, l'anteprima di Xcode 4.2 è ancora sotto NDA - invia qualsiasi domanda ai forum degli sviluppatori accedendo al tuo developer account.

Vedere questo buono weblog post.