0

这可能是一个菜鸟问题,但它让我发疯。我正在开发一个应用程序,它以编程方式(不在示例代码中)在主视图中加载子视图。子视图是一个 IEAudioChannelViewController 实例,但是当我尝试按如下方式释放对象时应用程序崩溃:

IEAudioChannelViewController *audiochannel = (IEAudioChannelViewController *) [sb instantiateViewControllerWithIdentifier:@"AudioChannel"];
NSLog(@"Audio channel: %@", audiochannel);
[audiochannel release]; <-- here the crash!

如果我删除它的工作释放线,

知道为什么会这样吗?(自动引用计数被禁用)

4

2 回答 2

2

嗯。发生这种情况是因为您调用release. release仅当您是对象的所有者时才调用- 例如,当使用 alloc、copy、new、retain 关键字时。

于 2012-06-06T20:38:49.723 回答
1

您正在释放自动释放的对象,请删除

[audiochannel release]

因为 instantiateViewControllerWithIdentifier 返回一个自动释放的对象规则总是一样的,如果你不分配、新建、保留或复制一个对象,那么不要在它上面调用释放

于 2012-06-06T20:38:58.590 回答