【发布时间】:2011-12-15 19:42:59
【问题描述】:
示例代码:
- (Foo*)createFoo {
Foo *foo = [[Foo alloc] init];
return foo;
}
- (void)someOtherMethod {
Foo *foo;
foo = [self createFoo]; //retain count 1
[foo release]; //retain count = 0 => object gets released?
//repeat
foo = [self createFoo];
[foo release];
}
问题:我必须在 createFoo 中自动释放还是可以在 someOtherMethod 中释放返回的对象?
【问题讨论】:
-
我想你是在调用 [self createFoo] 而不是 [self Foo],那么可以在 someOtherMethod 中释放它。请记住,ARC 可以让您摆脱几乎所有的问题...
-
@ilMalvagioDottorProsciutto 虽然我同意 ARC 的评论,但我认为了解应该如何手动完成是件好事,除了 ARC 只是将这些调用放在任何地方,所以知道它在做什么相当不错。
-
@SimonLee 正是我的想法
标签: objective-c release autorelease retaincount