AVPlayer не сохраняет AVPlayerItem

Кто-нибудь знает, почему этот код дает сбой где-то в пуле релизов (после вызова «eject»)? Я видел в справочнике по классу AVPlayer, что свойство «currentItem» НЕ объявлено как «retain» http://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009530-CH1-SW21

Это ошибка в классе AVPlayer или я должен сохранить ее где-то еще?

Спасибо!

- (void) viewDidLoad {
    NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
    playerItem = [[AVPlayerItem alloc] initWithURL:url];
    player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
}

- (IBAction) eject {
    [player release];
    [playerItem release];
}

person David Fauthoux    schedule 07.12.2010    source источник


Ответы (2)


Я обычно использую это для настройки плеера:

if (!self.player) {
    player = [[AVPlayer alloc] init];
    }

    [self.player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:videoURL]];
person cynistersix    schedule 19.01.2011
comment
Спасибо за ответ. Наконец, мне удалось выпустить без каких-либо сбоев, удалив контроллер проигрывателя (содержащий AVPlayer) из его супервизора ПЕРЕД выпуском самого контроллера проигрывателя. - person David Fauthoux; 24.01.2011

Я считаю, что AVPlayer сохраняет AVPlayerItem в функции initWithPlayerItem:, поэтому вы, возможно, теряете память с вашим AVPlayerItem. «currentItem» является свойством только для чтения и не должно «сохраняться», которое предназначено только для свойств, доступных для записи.

person m8labs    schedule 09.04.2012