簡體   English   中英

如果我有一個帶有“ retain”的IBOutlet,為什么沒有清理內存,而當我有一個“ assign”的IBOutlet時為什么要清理內存?

[英]Why do I have to clean up memory if I have an IBOutlet with “retain”, but not when I have one with “assign”?

例:

@property (..., assign)

在那里,我沒有在dealloc方法中進行任何清理。 但是當我有一個

@property (..., retain)

那么我會這樣做。

我在互聯網上的某個地方有那個。 不記得該網站了。 好吧,我知道編譯器指令中的retain-keyword會使retain count +1,但實際上我認為我錯過了assign和retain的深層區別。

Assign將僅復制指針,而不向對象發送retain消息。 因此,由於您沒有保留它,因此不必釋放它。

如您所說,在保留的情況下,它將向對象發送retain消息,從而增加其保留計數,因此您有責任在對象(在dealloc )發送該對象的release消息。

暫無
暫無

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

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