1

删除了发布声明。其中一些似乎还可以,但这可能只是因为其他东西先爆炸了。


- (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 警报的错误和详细信息。**


好吧,我不觉得自己很愚蠢。这都是内存管理。
我努力不泄漏任何东西,即使是在临时解决方案中,但我做到了......

4

3 回答 3

2

在您提供的代码中,我没有看到任何对保留、分配/初始化或复制的某些变体的调用。这意味着您不应该在该方法中调用 release ,这将是您崩溃的原因。确保您没有在其他方法中过度释放并记住内存管理的基础知识

于 2011-06-30T17:38:31.297 回答
0

// [作品发布];

//[标题发布];

评论那些,因为那些是自动释放的对象

于 2011-06-30T17:42:51.470 回答
0

您正在发布标题和艺术品,但它们不是您的。这将导致,迟早,释放一个已经被释放的对象(从项目的 dealloc 或其他地方)。

于 2011-06-30T17:39:26.290 回答