Uma*_*uas 0 memory-management objective-c ios
我应该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];
Run Code Online (Sandbox Code Playgroud)
您不应该发布NSBundle 和NSURL实例,因为您尚未分配这些.
来自apple文档.
如果使用名称以"alloc","new","copy"或"mutableCopy"(例如,alloc,newObject或mutableCopy)开头的方法创建对象,或者如果发送它,则获取对象的所有权保留消息.
您使用release或autorelease放弃对象的所有权.autorelease只是意味着"将来发送一条释放消息"(具体来说:当使用的自动释放池收到一条排放消息时 - 要了解这将是什么时候,请参阅"自动释放池").
我强烈建议你清除你的记忆管理概念.
阅读关于内存管理规则的苹果文章
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |