Questa è una domanda in due parti nella speranza che io possa comprendere ulteriori informazioni sull'argomento.Chiarimento dichiarazione proprietà iOS
1) Mi sembra di avere due popolari opzioni per dichiarare una proprietà per un classe in objective c
. Uno è quello di aggiungere la proprietà al corpo della classe dell'intestazione, ad es.
@interface MyClass : NSObject {
NSArray *myArray;
}
Oppure è possibile aggiungere un commento dopo il corpo @interface
e prima della dichiarazione @end
in questo modo.
@interface MyClass : NSObject {
//
}
@property (nonatomic, retain) NSArray *myArray;
Qual è la differenza tra questi due "stili" e quando si sceglie uno sopra l'altro?
2) dopo lo @property
si trovano opzioni come (nonatomic, retain)
. Per quali motivi e perché/quando si utilizzano diverse opzioni?
Questa unica risposta è la parte 2 della domanda. La risposta di Simon discute la parte 1. –
@MarkAmery ovviamente - ho sentito che la prima parte era davvero di base, e altre risposte l'avevano trattata mentre stavo rispondendo. Non c'è bisogno di aggiungere informazioni duplicate qui. –
# 2 è completamente errato. Le proprietà 'atomic' * non * assicurano la sicurezza del thread; piuttosto assicura l'atomicità. Se il thread A e il thread B stanno entrambi scrivendo, 'atomic' assicura che il risultato sia un valore intero, che significa sia l'uno che l'altro. Quale è indefinito. Scrivere codice thread-safe non è così semplice come usare le proprietà 'atomic'. Vedere la sezione "Sincronizzazione" della Guida alla programmazione del threading: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i -CH8-SW1 –