我正在为 iPhone 编写一个音乐播放列表编辑应用程序。
我正在订阅
MPMusicPlayerController
MPMusicPlayerControllerNowPlayingItemDidChangeNotification
并且我遇到了一个问题,即在更改@selector
时多次调用此通知的方法。nowPlayingItem:
我已将每个播放列表划分为它们自己的MPMediaItemCollection
对象,当一个播放列表完成后,我通过调用播放器加载下一个播放列表,并通过其方法-pause
将新的播放器控制器传递给音乐播放器控制器。然后,我将 nowPlayingItem 显式设置为我自己的一个项目,最后我调用.MPMediaItemCollection
-setQueueWithItemCollection:
-play
[musicPlayer pause];
[musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[selectedPrefs mediaItems]]];
musicPlayer.nowPlayingItem = [selectedPrefs.playbackItems objectAtIndex:selectedPrefs.nowPlayingIndex];
[musicPlayer play];
当我这样做时,@selector
会为正在播放的项目更改调用两次。我怀疑这是因为-setQueueWithItemCollection:
自动将正在播放的项目更改为指向新集合中的第一个媒体项目,然后我在调用-play
.
非常感谢。