这可能是一个noob问题,但它让我发疯。我正在开发一个应用程序,以编程方式在主视图中加载子视图(而不是在示例代码中)。子视图是一个IEAudioChannelViewController实例,但是当我尝试按如下方式释放对象时应用程序崩溃:
IEAudioChannelViewController *audiochannel = (IEAudioChannelViewController *) [sb instantiateViewControllerWithIdentifier:@"AudioChannel"];
NSLog(@"Audio channel: %@", audiochannel);
[audiochannel release]; <-- here the crash!
如果我删除了它的释放线,
知道为什么会这样吗? (禁用自动引用计数)
答案 0 :(得分:2)
嗯。这是因为您致电release
。仅当您是对象的所有者时才致电release
- 例如何时使用alloc,copy,new,retain关键字。
答案 1 :(得分:1)
您正在释放自动释放的对象,请删除
[audiochannel release]
因为instantiateViewControllerWithIdentifier返回一个自动释放的对象 规则总是相同的,如果你不分配,新的,保留或复制一个对象然后不要在它上面调用发布