Сообщение отправлено освобожденному объекту (никогда не выпускается вручную)
Удалены заявления о выпуске. Некоторые из них, казалось, были в порядке, но это было, вероятно, только потому, что другие вещи взрывались первыми.
- (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 оповещения о вызове освобожденным объектам. **
Ну, я не чувствую себя глупо. Это было все управление памятью.
Я приложил усилия, чтобы ничего не пропустить, даже во временном решении, и все же я сделал это...
3 ответа
В коде, который вы предоставляете, я не вижу никаких вызовов retain, alloc / init или какой-либо другой копии. Это означает, что у вас не должно быть никаких вызовов для освобождения в этом методе, и это будет причиной вашего сбоя. Убедитесь, что вы не слишком много выпускаете другими методами и помните основы управления памятью.
// [выпуск художественного произведения];
// [title release];
прокомментируйте те, так как они являются автоматически выпущенным объектом
Вы выпускаете название и произведение искусства, но они не ваши. Рано или поздно это приведет к предварительному освобождению уже освобожденного объекта (из освобождения объекта или где-то еще).