我是否应该在以下代码中发布NSBundle
? NSURL
也应该被释放?
我很困惑。
NSBundle *mainBundle = [NSBundle mainBundle];
NSError *error;
NSURL *audioURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"count_in" ofType: @"mp3"]];
AVAudioPlayer *player1 = [(AVAudioPlayer*) [AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error];
self.player = player1;
[self.player play];
[player1 release];
答案 0 :(得分:5)
您不应该发布NSBundle
和NSURL
个实例,因为您尚未分配这些实例。
来自apple文档。
如果您使用的方法创建对象,则获取对象的所有权 名称以“alloc”,“new”开头, “复制”或“mutableCopy”(例如, alloc,newObject或mutableCopy),或 如果你发送保留信息。
您使用release或autorelease放弃对象的所有权。 autorelease只是意味着“发送一个版本 未来的信息“(具体来说: 当使用自动释放池时 接收消息 - 了解 如果是这样,请参阅“自动释放 池”)。
我强烈建议您清除内存管理概念。
阅读苹果文章 Memory Management Rules