0

你知道如果我保留一个自动释放的对象会发生什么吗?它会被释放还是保留获胜?

4

3 回答 3

7

你知道如果我保留一个自动释放的对象会发生什么吗?它会被释放还是保留获胜?

retain胜利”,但这样想就充满了失败。

保留和释放只是增加或减少对象保留计数的机制。自动释放只是延迟释放;不多不少。

如果您保留一个自动释放的对象,您现在正在增加保留计数,而保留计数将在以后减少。这事儿常常发生; [NSString stringWithFormat: @"...."]返回一个自动释放的字符串,retain如果您希望它停留在[最常见的]当前通过事件循环的范围之外。

于 2011-01-16T03:40:23.633 回答
2

如果你想保留你的变量,你需要保留它。例如:

myButton = [[UIButton buttonWithType:...] retain];

buttonWithType:方法返回一个UIButton已用 实例化的autorelease。它会在需要时自行释放(可以这么说)。

于 2011-01-16T02:37:20.040 回答
2

保留将胜出。这是很常见的,是一种例外的做法。

通常方便方法返回自动释放的对象,如

[NSString stringWithFormat:@""];

只要您记得稍后释放它们,就可以保留您需要的任何对象。

请记住,自动释放将发生在当前系统消息的末尾。

来自下面的文章:“为系统处理的每条消息创建一个自动释放池,并且在对该消息的处理完成后,池中的对象都将自动释放。”

可以在这里找到一些很好的解释:

http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/7295-getters-setters-properties-newbie.html

于 2011-01-16T02:38:54.527 回答