一遍又一遍地实例化MPMusicPlayerController。好/坏的做法

时间:2011-08-02 01:39:39

标签: iphone ios

我不是100%确定MPMusicPlayerController引擎盖下发生的事情(源代码会很好)。我不知道每次调用像我的委托方法handlePlayPauseTapped这样的方法时,我在app上创建的负载有多重。我会假设因为你实例化它,即没有alloc / init,它正在为我自动进行一些缓存;但是,API文档没有说明这一点。

我是否应该拥有一个全局变量,启动它一次并在应用程序的生命周期中重复使用它?或者,我可以节省一些代码复杂性,只需在我需要的地方创建一个。就我而言,我需要一个来自众多视角的iPod控制器。

- (IBAction) handlePlayPauseTapped {

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

关于最佳实践的想法?

1 个答案:

答案 0 :(得分:1)

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

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