你知道如果我保留一个自动释放的对象会发生什么吗?它会被释放还是保留获胜?
3 回答
你知道如果我保留一个自动释放的对象会发生什么吗?它会被释放还是保留获胜?
“retain
胜利”,但这样想就充满了失败。
保留和释放只是增加或减少对象保留计数的机制。自动释放只是延迟释放;不多不少。
如果您保留一个自动释放的对象,您现在正在增加保留计数,而保留计数将在以后减少。这事儿常常发生; [NSString stringWithFormat: @"...."]
返回一个自动释放的字符串,retain
如果您希望它停留在[最常见的]当前通过事件循环的范围之外。
如果你想保留你的变量,你需要保留它。例如:
myButton = [[UIButton buttonWithType:...] retain];
该buttonWithType:
方法返回一个UIButton
已用 实例化的autorelease
。它会在需要时自行释放(可以这么说)。
保留将胜出。这是很常见的,是一种例外的做法。
通常方便方法返回自动释放的对象,如
[NSString stringWithFormat:@""];
只要您记得稍后释放它们,就可以保留您需要的任何对象。
请记住,自动释放将发生在当前系统消息的末尾。
来自下面的文章:“为系统处理的每条消息创建一个自动释放池,并且在对该消息的处理完成后,池中的对象都将自动释放。”
可以在这里找到一些很好的解释:
http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/7295-getters-setters-properties-newbie.html