MPMusicPlayerController

MPMusicPlayerController

我不是100%知道MPMusicPlayerController的内幕正在发生什么(源代码会很好)。我不知道每次调用诸如委托方法handlePlayPauseTapped之类的方法都会创建一个应用程序,从而给应用程序造成了沉重的负担。我会因为您实例化它的方式(即没有alloc / init)而假定它在自动为我做一些缓存;但是,API文档对此没有说明。

我是否应该有一个全局变量,将其初始化一次并在应用程序的生命周期内重复使用?或者,我可以节省一些代码复杂性,而只在需要的地方创建一个。就我而言,我需要很多角度的iPod控制器。

- (IBAction) handlePlayPauseTapped {

    MPMusicPlayerController *iPodController = [MPMusicPlayerController iPodMusicPlayer];
    if (iPodController.playbackState == MPMusicPlaybackStatePlaying) {
        [iPodController pause];
    } else {
        [iPodController play];
    }
}


对最佳做法有何想法?

最佳答案

我怀疑您的代码实际上并没有创建新的实例(似乎在内部更可能是单个对象)。当然,这可以在调试器中轻松检查。

为了获得更大的灵活性,我可能会将音乐播放器控制器作为我的类的实例变量,无论如何都会使问题产生争议。

10-08 05:47