[ios]基本保留,autorelease 问题

发布时间: 2017/3/21 23:11:55
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

保留和 autorelease 问题。

// A
UIView *temp = [[UIView alloc] init];
myView = temp;
[temp release];

// B
myView = [[UIView alloc] init];

该两份守则有无差异吗?

NSString *str = [NSString stringWithString:@"Hello"];
NSString *str = @"Hello";

和这两个吗?我是不太清楚关于保留计数尚未。 谢谢。

解决方法 1:

例如第一,他们是非常不同的。在第一个代码块,给 temp UIView 的保留计数为 1 (由于到 alloc )。当你释放它在第三行时,着变量现在很糟糕,因为可以销毁该对象。如果你想着做下去,做︰

MyView = [temp retain];

第一个示例中的第二部分将创建 UIView,没有关系的全新实例到 temp

在第二个示例中, stringWithString 方法将 autorelease 您的字符串,也就是说,它将被自动释放你"释放池"发布时,很久以后。你不必担心释放它。然而,在第二行,是静态分配的字符串。保持计数和释放是完全没有必要和他们一起。

忘了提...检查出这个问题的答案更多关于保留/释放规则。

赞助商