2010-12-07 3 views
2

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

Является ли это ошибка в классе 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]; 
} 

ответ

2

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

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

    [self.player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:videoURL]]; 
+0

Спасибо за ваш ответ. Я, наконец, удалось освободить без какого-либо сбоя, удалив контроллер плеера (содержащий AVPlayer) из своего супервизора перед выпуском самого контроллера плеера. – 2011-01-24 09:54:01

0

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

Смежные вопросы