发送到已释放对象的消息(从未手动释放)



删除了发布声明。他们中的一些人似乎还好,但这可能只是因为其他事情首先爆炸了。


- (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或拷贝变体的调用。这意味着您不应该在该方法中有任何要释放的调用,这将导致崩溃。确保你没有在其他方法中过度释放,并记住内存管理的基本知识。

您正在发布标题和艺术作品,但它们不是您的。这将很快或稍后导致尝试释放已解除分配的对象(从项目的解除分配或其他地方)。

//[艺术作品发布];

//【标题发布】;

注释那些,因为它们是自动释放的对象

相关内容

  • 没有找到相关文章

最新更新