簡體   English   中英

Objective-c的@property

[英]The @property of Objective-c

以下是真的:

weak = unsafe_unretain = assign

強=保留

如果這是他們重復的原因? 我們應該選擇哪一個?

不,這不是真的。 weak表示不保留對象,此外,當取消分配對象時,變量/ property將自動設置為nil。 unsafe_unretained表示不保留對象,但沒有自動清零。 strongretain是等價的。

assign通常用於原語,如intdouble ,因為你只是分配。 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

展望未來,您應該對對象使用strongweak ,並為原始類型assign

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM