Xamarin iOS RemoveObserver AVPlayerItem

Я настроил наблюдатель состояния для AVPlayerItem, но не могу его удалить.

 if(_aPlayer.CurrentItem != null)
 {
      _aPlayer.CurrentItem.RemoveObserver(HandleAction1, "status")
 }

 var aAsset = AVAsset.FromUrl(NSUrl.FromFilename("some_sounds.mp3"));
 var aPlayerItem = new AVPlayerItem(audioAsset);

 _aPlayer.ReplaceCurrentItemWithPlayerItem(audioPlayerItem);
 aPlayerItem.AddObserver("status", NSKeyValueObservingOptions.OldNew, HandleAction1);

получение ошибки «невозможно преобразовать группу методов в nsobject»


person jimmy neutron    schedule 15.10.2018    source источник


Ответы (1)


AVPlayerItem.AddObserver возвращает IDisposable, на который вам нужно сохранить ссылку.

Когда вы закончите с этим наблюдаемым вызовом Dispose.

var statusObserver = aPlayerItem.AddObserver("status", NSKeyValueObservingOptions.OldNew, HandleAction1);

statusObserver.Dispose();
person SushiHangover    schedule 16.10.2018
comment
@jimmyneutron Это зависит от того, где создается наблюдаемое. Если вы используете AVPlayerItem.CurrentItem.AddObserver, NSNotificationCenter.DefaultCenter.AddObserver и т. д., вам возвращается Observer (тип NSObject), и этот объект может быть передан связанному с ним методу RemoveObserver() для того же объекта. - person SushiHangover; 16.10.2018
comment
Нужно ли после этого вызывать _aPlayer.CurrentItem.Dispose()? if (_aPlayer.CurrentItem!= null) { _statusObserver.Dispose(); _aPlayer.CurrentItem.Dispose(); } - person jimmy neutron; 16.10.2018