2

我正在为 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.

非常感谢。

4

0 回答 0