我只是写一些探索性的代码来巩固我的Objective-C的理解和我碰到这个例子中,我没有完全得到来了。 我定义这个方法并运行代码:
- (NSString *)stringMethod
{
NSString *stringPointer = [[NSString alloc] initWithFormat:@"string inside stringPointer"];
[stringPointer release];
[stringPointer release];
NSLog(@"retain count of stringPointer is %i", [stringPointer retainCount]);
return stringPointer;
}
运行代码,调用此方法后,我注意到一些事情:
通常情况下,如果我尝试访问东西是打零保留计数后按说dealloced,我得到一个EXC_BAD_ACCESS错误。 在这里,我得到一个malloc“双免费”错误信息。 这是为什么?
不管如何“[stringPointer发行]”多行我添加到代码中,报告的NSLog当我添加更多的释放一个保留1计数我只是得到更多的“双无”的错误。 为什么没有按预期工作发布声明?
虽然我已经过发布stringPointer和我收到了一堆的“双无”的错误,返回值仍然有效,仿佛什么都没有发生(我有另一种的NSLog在报告返回值的主代码)。 该计划将继续正常运行。 同样,有人可以解释为什么出现这种情况?
这些例子是相当琐碎,但我试图让这是怎么回事十足的把握。 谢谢!