[英]The @property of Objective-c
以下是真的:
weak = unsafe_unretain = assign
強=保留
如果這是他們重復的原因? 我們應該選擇哪一個?
不,這不是真的。 weak
表示不保留對象,此外,當取消分配對象時,變量/ property將自動設置為nil。 unsafe_unretained
表示不保留對象,但沒有自動清零。 strong
和retain
是等價的。
assign
通常用於原語,如int
或double
,因為你只是分配。 unsafe_unretained
用於您不知道保留的Objective-C對象,並理解為什么不安全。 weak
是iOS 5中引入的一個新功能,就像unsafe_unretained
一樣,但與ARC有不同的語義。 查看Apple的高級內存管理指南以獲取更多信息。
實際上,如果你的目標是iOS 5或更高版本,你幾乎不會使用unsafe_unretained
。
strong
:變量在其范圍內保留。 retain也可以作為strong的同義詞。 copy
:創建並保留副本。 weak
:用它指向一個對象而不聲稱擁有權。 釋放對象后,指針將被清零。 unsafe_unretained
:與弱相同,但在釋放后不會使指針無效。 assign
:原始值。 如果您的目標是iOS 4,則無法使用弱。 請改用unsafe_unretained。
在ARC之前,屬性的默認值是assign,現在默認值很強。
weak
!= unsafe_unretain
如果指向的對象被釋放,則weak
會自動將其指針轉換為nil
。
展望未來,您應該對對象使用strong
和weak
,並為原始類型assign
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.