保留和複製之間的區別究竟是什麼?對參考計數有什麼意義?保留和複製之間的區別?
我知道,當一個對象被使用分配分配/保留,引用計數由一個上升。 那麼如何使用副本?
與此相關的另一個問題是,使用
@property(nonatomic,retain)和@property(nonatomic,copy)之間的區別?
保留和複製之間的區別究竟是什麼?對參考計數有什麼意義?保留和複製之間的區別?
我知道,當一個對象被使用分配分配/保留,引用計數由一個上升。 那麼如何使用副本?
與此相關的另一個問題是,使用
@property(nonatomic,retain)和@property(nonatomic,copy)之間的區別?
回答你的問題,以我的知識。首先,保留和複製之間的區別究竟是什麼?對參考計數有什麼意義?
保留 - 「指定保留應當在分配對象上調用......以前的值發送釋放消息。」所以你可以想象分配一個NSString實例(這是一個對象,你可能想保留)。所以保留計數由1
副本上升 - 「指定對象的副本應該用於分配......以前的值發送釋放消息。」基本上與保留相同,但發送 - 複製而不是 - 保留。如果我沒記錯,計數也會增加1。
好吧,現在進入更多的細節。
物業屬性是特殊的關鍵字來告訴編譯器如何生成getter和setter。在這裏指定兩個屬性:nonatomic,它告訴編譯器不要擔心多線程,並保留,這會告訴編譯器在設置實例變量之前保留傳入的變量。
在其他情況下,你可能需要使用「分配」財產屬性,而不是保留,它告訴編譯器不要!保留傳入的變量。或者也許是「複製」屬性,它在設置之前複製了傳入的變量。
我希望有幫助。我在這裏發現了另一篇文章,可能也會幫助你。
Objective C - Assign, Copy, Retain
乾杯! 聖何塞
一般來說,copy
創建具有與原始對象相同的值的新的對象,並且將新創建的對象,以1中的參考計數(順便說,原始對象的引用計數是不受影響)。
然而,copy
相當於retain
不可變對象,這只是1
increate原始對象的引用計數您還沒有接受任何的答案。你應該選擇一個。 :) – Jiraheta 2013-11-07 20:15:31