143 iphone cocoa properties objective-c ios
"非原子"在此代码中的含义是什么?
@property(nonatomic, retain) UITextField *theUsersName;
Run Code Online (Sandbox Code Playgroud)
原子和非原子有什么区别?
谢谢
Jes*_*sak 267
看一下Apple Docs.
基本上,如果您说nonatomic,并且您使用生成访问器@synthesize,那么如果多个线程尝试一次更改/读取属性,则可能发生错误.您可以获得部分写入的值或过度释放/保留的对象,这很容易导致崩溃.(但这可能比原子访问器快得多.)
如果你使用默认值(这是atomic;以前没有关键字,但现在有),那么@synthesized方法使用对象级锁定来确保序列化对单个属性的多个读/写.正如Apple文档指出的那样,这并不意味着整个对象是线程安全的,而是单个属性的读/写.
当然,如果您实现自己的访问器而不是使用@synthesize,我认为这些声明除了表达您是否以线程安全方式实现该属性的意图外什么都不做.
swi*_*Boy 46
阅读了如此多的文章和StackOverflow帖子,并制作了演示应用程序以检查Variable属性属性后,我决定将所有属性信息放在一起
以下是详细的文章链接,您可以在其中找到上述所有属性,这肯定会对您有所帮助.非常感谢所有在这里给出最佳答案的人!
示例:
@property (retain) NSString *name;
@synthesize name;
Run Code Online (Sandbox Code Playgroud)
例:
@property (nonatomic, retain) NSString *name;
@synthesize name;
Run Code Online (Sandbox Code Playgroud)