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

あなたが提供するコードでは、retain、alloc / init、またはコピーのバリエーションの呼び出しは見られません。つまり、そのメソッドでreleaseを呼び出す必要はなく、それがクラッシュの原因になります。他の方法でリリースしすぎていないことを確認し、メモリ管理の基本を覚えておいてください。

于 2011-06-30T17:38:31.297 に答える
0

タイトルとアートワークをリリースしていますが、それらはあなたのものではありません。これは、遅かれ早かれ、すでに割り当て解除されたオブジェクトを(アイテムのdeallocまたは他の場所から)解放するための暫定的なものにつながります。

于 2011-06-30T17:39:26.290 に答える
0

//[アートワークリリース];

//[タイトルリリース];

それらは自動リリースされたオブジェクトであるため、コメントしてください

于 2011-06-30T17:42:51.470 に答える