сообщение, отправленное освобожденному объекту (никогда не освобождается вручную)

Удалены заявления о выпуске. Некоторые из них, казалось, были в порядке, но это, вероятно, было только потому, что другие вещи взрывались первыми.


- (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 о вызове освобожденных объектов. **


Ну не чувствую себя глупо. Это было все управление памятью.
Я приложил усилия, чтобы ничего не утекло, даже во временном решении, и все же я сделал это...


person Thromordyn    schedule 30.06.2011    source источник
comment
Вы пробовали профилировать с помощью Zombies?   -  person Richard    schedule 30.06.2011


Ответы (3)


В предоставленном вами коде я не вижу никаких вызовов для сохранения, выделения/инициализации или каких-либо вариантов копирования. Это означает, что у вас не должно быть никаких вызовов для выпуска в этом методе, и это будет причиной вашего сбоя. Убедитесь, что вы не используете слишком много других методов, и помните основы управления памятью.

person Joe    schedule 30.06.2011
comment
Обычно я звоню new, а затем что-то назначаю, но в этот раз я этого не сделал. Простая путаница. // Спасибо. - person Thromordyn; 05.07.2011

Вы публикуете название и обложку, но они не ваши. Это приведет, рано или поздно, к предварительному освобождению уже освобожденного объекта (из деаллока элемента или где-то еще).

person viggio24    schedule 30.06.2011

// [выпуск обложки];

//[релиз заголовка];

прокомментируйте их, поскольку они являются автоматически выпущенным объектом

person Vijay-Apple-Dev.blogspot.com    schedule 30.06.2011