[英]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.