我应该在声音中释放NSBundle吗?

时间:2011-05-30 17:00:59

标签: ios objective-c memory-management

我是否应该在以下代码中发布NSBundleNSURL也应该被释放? 我很困惑。

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];

1 个答案:

答案 0 :(得分:5)

您不应该发布NSBundleNSURL个实例,因为您尚未分配这些实例。

来自apple文档。

  

如果您使用的方法创建对象,则获取对象的所有权   名称以“alloc”,“new”开头,   “复制”或“mutableCopy”(例如,   alloc,newObject或mutableCopy),或   如果你发送保留信息。

     

您使用release或autorelease放弃对象的所有权。   autorelease只是意味着“发送一个版本   未来的信息“(具体来说:   当使用自动释放池时   接收消息 - 了解   如果是这样,请参阅“自动释放   池”)。

我强烈建议您清除内存管理概念。

阅读苹果文章 Memory Management Rules