另一个类的Dealloc对象

时间:2011-01-25 06:51:22

标签: iphone memory-management dealloc

您好我通常会创建另一个类的对象。如果这个会在自动发布池中,你可以打电话给我吗?或者我们应该手动发布它。

2 个答案:

答案 0 :(得分:1)

如果您初始复制或新建它们,如果您使用分配自动发布,则必须取消分配它们,然后将自动释放它们

例如

Foo *foo = [[Foo alloc] init]; //you'll have release it somewhere yourself

Foo *foo = [[[Foo alloc] init] autorelease];// this will be autreleased

答案 1 :(得分:1)

简单的情况是:如果你使用init,你有责任通过调用release或者调用autorelease来释放它。

e.g。

NSString *myString = [NSString alloc] init]; // You need to release this
...
[myString release]; // Now it's released - don't use it again!

或者如果你要把它交给其他人

NSString *myString = [NSString alloc] init]; // This needs releasing
...
return [myString autorelease]; // You are finished with it but someone else might want it

然而,还有一些其他案例。

NSString *myString = [NSString stringWithFormat:@"hi"];

此对象已在自动释放池中 - 请勿释放它!

NSString *secondString = [myString copy];

此对象需要发布 - 自动释放。

经验法则:名称中包含init,copy或new的任何内容 - 您创建它,然后释放它。其他任何东西都将被自动释放。