【发布时间】:2013-07-01 14:05:39
【问题描述】:
为什么循环中的第二行(a.retainCount 行)不会崩溃(由于访问错误)?
NSArray* a0 = @[[NSMutableString stringWithString:@"a"]];
NSArray * arr = [NSArray arrayWithObject:a0];
[a0 release];[a0 release];
for (NSArray* a in arr)
{
//NSLog(@"%d", (a == a0) );
NSLog(@"RC: %d", a.retainCount);
}
但如果循环中的第一行 (a == a0 one) 未注释,则会崩溃。
当自动释放池耗尽时,这肯定会崩溃,但我特别询问循环中的第二行,而不是之后。
谁能解释一下?
【问题讨论】:
-
你能解释一下这和
xcode有什么关系吗? -
这是一道作业题吗?我们不是来帮你做作业的。
-
其实一开始我还以为这是个愚蠢的问题,但越看越觉得可能不是。
-
@Sohaib 在 Google 上快速搜索“Objective-C autorelease release not crash”会出现欺骗链接作为第一个点击,不要告诉我你做过研究在发布之前,因为你显然没有。
-
@GradyPlayer 那些方便的方法都返回自动释放的对象,所以这是一个骗子。
标签: ios objective-c crash exc-bad-access