【发布时间】:2012-02-23 02:13:38
【问题描述】:
我已经创建了自动释放池。 localString 已添加到此池中。我释放了游泳池。 localString 和 string 必须被释放。但实际上他们还活着。你可以看到我的日志:
Why is the string object still alive? I don't know.
和代码:
-(NSString*) happyString
{
NSString *localString = [[[NSString alloc] initWithString:@"I don't know."] autorelease];
return localString;
}
-(IBAction) onButton:(id)sender
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *string = [self happyString];
[pool release];
NSLog(@"Why is the string object still alive? %@", string);
}
【问题讨论】:
-
也许retainCount不是0?也使用 [string retainCount] 记录此属性
-
@matzino 这没有任何价值——retainCount 毫无意义。
-
顺便说一下,你应该使用
[pool drain];而不是[pool release];。
标签: ios memory-management autorelease