搜尋

首頁  >  問答  >  主體

在objective-c中atomic和nonatomic有什麼差別? retain有什麼用?

比如下麵的代碼

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

他們有啥區別,retain在這裏起啥作用

高洛峰高洛峰2890 天前514

全部回覆(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
  • 取消回覆