一次又一次实例化MPMusicPlayerController.好的/坏的实践



我不能100%确定MPMusicPlayerController的底层发生了什么(源代码会很好)。我不知道每次调用委托方法handleplaypausetap时我在app上创建的负载有多重。我会假设因为你如何实例化它,即没有alloc/init,它会自动为我做一些缓存;然而,API文档并没有提到这一点。

我应该有一个全局变量,初始化一次,并在应用的生命周期中重用它吗?或者,我可以为自己节省一些代码复杂性,只需在需要的地方创建一个。在我的情况下,我需要一个iPod控制器从多个视图。

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

关于最佳实践的想法?

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

为了更大的灵活性,我可能会让音乐播放器控制器成为我的类的一个实例变量,这将使问题无论如何都没有意义。

最新更新