搜索

首页  >  问答  >  正文

在objective-c中atomic和nonatomic有什么区别?retain有什么用?

比如下面的代码

@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;

他们有啥区别,retain在这里起啥作用

高洛峰高洛峰2769 天前460

全部回复(4)我来回复

  • ringa_lee

    ringa_lee2017-04-21 10:59:07

    retain是给属性的引用计数加1
    这里的retain是指,这个setter会给参数的引用计数加1。例如:

    self.userName = uName;

    这个时候 uName的引用计数会被加1。
    但是SDK5.0以后支持ARC,就是自动应用计数,所以定义属性就不用retain和copy了,而用strong,让ARC来管理。
    提供苹果核的一篇文章可供参考:http://pingguohe.net/2011/08/05/llvm3...

    回复
    0
  • 黄舟

    黄舟2017-04-21 10:59:07

    atomic线程安全,性能低于nonatomic。noatomic不保证线程安全。

    回复
    0
  • ringa_lee

    ringa_lee2017-04-21 10:59:07

    atomic 并不代表线程安全,只是说对同一对象的set和get的操作是顺序执行的。

    回复
    0
  • 阿神

    阿神2017-04-21 10:59:07

    iOS atomic 与 nonatomic 区别

    回复
    0
  • 取消回复