[英]Ambiguous scenario for iPhone memory management
我很難理解這種情況。
由於我沒有在dealloc方法中釋放該屬性,因此該方案是否會導致內存泄漏或該屬性會自動釋放?
Cocoa的工作方式是,在任何一種方法*中,內存管理始終看起來局部平衡。 這是重點。 您僅通過查看一個方法就能知道該方法是否泄漏或錯誤。 不需要全局程序知識。
如果您從-copy,-alloc,-retain或-new方法收到對象,則有責任釋放該對象。
如果您這樣做:
[obj setProp:foo];
釋放foo是您的責任嗎? 否-請參閱規則。 如果obj保留了它(您是說您碰巧知道它確實存在),那么obj的責任是釋放它,如果不早的話,可以在其dealloc方法中釋放它。
因此,如果您執行此操作,則-prop
是哪種屬性,它都是平衡的。
id obj = [[MyObject alloc] init];
[obj setProp:foo];
[obj release];
*除了init,copy,dealloc和accessor方法的實現內。
是的,這是泄漏。
保留,分配將使計數器增加一。 釋放將減少計數器。 當計數器達到零時,它將釋放內存。
認為二傳手是這樣的:
[newvalue retain];
[property release];
property = newvalue;
所以..
您將不得不再次釋放該對象。 而且,請相信我, autorelease
在iPhone環境中無法很好地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.