删除了发布声明。他们中的一些人似乎还好,但这可能只是因为其他事情首先爆炸了。
- (void)handleNowPlayingItemChanged:(id)notification {
MPMediaItem *item = self.musicPlayer.nowPlayingItem;
NSString *title = [item valueForProperty:MPMediaItemPropertyTitle];
NSNumber *duration = [item
valueForProperty:MPMediaItemPropertyPlaybackDuration];
float totalTime = [duration floatValue];
progressSlider.maximumValue = totalTime;
CGSize artworkImageViewSize = self.albumCover.bounds.size;
MPMediaItemArtwork *artwork = [item valueForProperty:
MPMediaItemPropertyArtwork];
if (artwork) {
self.albumCover.image = [artwork imageWithSize:artworkImageViewSize];
} else {
self.albumCover.image = nil;
}
titleLabel.text = title;
/*OpenEars stuff*/
}
在另一个问题中,我提到了有关艺术品的SQLite错误。
**删除了有关调用已释放对象的NSZombieEnabled警报的错误和详细信息。**
我不觉得自己很愚蠢吗。这都是内存管理
我努力不泄漏任何东西,即使是临时解决方案,但我做到了。。。
在您提供的代码中,我没有看到任何对retain、alloc/init或拷贝变体的调用。这意味着您不应该在该方法中有任何要释放的调用,这将导致崩溃。确保你没有在其他方法中过度释放,并记住内存管理的基本知识。
您正在发布标题和艺术作品,但它们不是您的。这将很快或稍后导致尝试释放已解除分配的对象(从项目的解除分配或其他地方)。
//[艺术作品发布];
//【标题发布】;
注释那些,因为它们是自动释放的对象