簡體   English   中英

Objective-C中的內存管理混亂?

[英]Confusion in memory management in Objective-C?

我了解了Objective-C中的手動和ARC內存管理。 在以下幾點,我很困惑,關於Objective-C中的內存管理,這是真的嗎?

  • 始終取消ARC和手動內存管理下的dealloc中的屬性。

  • 不必取消ARC和手動內存管理下的dealloc中的屬性。

  • 在ARC下的dealloc中取消屬性,但在手動內存管理中不取消。

  • 取消手動內存管理下的dealloc中的屬性,但不在ARC中。

您無需“淘汰”屬性,而在執行手動內存管理時只需釋放它們。

當您將值設置為nil時,您會丟失那里的舊值。 該舊值存儲了對象的地址。 現在該對象繼續存在,但是您不再知道其地址,也無法釋放它。

Release告訴對象“我不再使用您,如果我是最后一個,請刪除自己”。 在ARC中,保留和釋放調用由編譯器自動添加。 幾乎沒有理由再自己進行手動內存管理了。 ARC是必經之路。

在大多數情況下,沒有太多理由使用手動內存管理了。

但是要回答您的問題,請不要取消分配。 代替:

  1. 對ARC的dealloc中的屬性不執行任何操作。
  2. 在手動管理的dealloc中釋放強烈持有的屬性。 [myObject release];

只需使用ARC和快樂的日子!

但是,您至少應該了解強引用和弱引用之間的區別。

暫無
暫無

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

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