這是一個兩部分的問題,希望我可以瞭解更多關於該主題。iOS財產聲明澄清
1)在我看來,你必須在objective c
聲明屬性一個二班流行選項。一種是將屬性添加到標題的類體中,例如。
@interface MyClass : NSObject {
NSArray *myArray;
}
或者你可以在@interface
後身體和@end
聲明像這樣前加入。
@interface MyClass : NSObject {
//
}
@property (nonatomic, retain) NSArray *myArray;
是什麼這兩個「風格」,當你選擇一個比其他的區別?
2)在@property
之後,您會找到諸如(nonatomic, retain)
之類的選項。什麼是和爲什麼/當你使用不同的選項?
這個答案只有問題的第2部分。 Simon的答案討論第1部分。 – 2013-06-11 17:05:09
@MarkAmery當然 - 我覺得第1部分是非常基本的,其他答案在我回答時已經涵蓋了它。無需在此添加重複信息。 # – 2013-06-11 17:21:38
#2完全不正確。 'atomic'屬性*不*確保線程安全;而是確保原子性。如果線程A和線程B都在寫入,'atomic'確保結果將是一個整體值,這意味着任何一個或另一個。哪一個是未定義的。編寫線程安全的代碼並不像使用'atomic'屬性那麼簡單。請參閱線程編程指南的「同步」一節:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i -CH8-SW1 – 2013-07-20 10:46:41