这是一个两部分的问题,希望我可以了解更多关于该主题。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