我不是100%知道MPMusicPlayerController的内幕正在发生什么(源代码会很好)。我不知道每次调用诸如委托方法handlePlayPauseTapped之类的方法都会创建一个应用程序,从而给应用程序造成了沉重的负担。我会因为您实例化它的方式(即没有alloc / init)而假定它在自动为我做一些缓存;但是,API文档对此没有说明。
我是否应该有一个全局变量,将其初始化一次并在应用程序的生命周期内重复使用?或者,我可以节省一些代码复杂性,而只在需要的地方创建一个。就我而言,我需要很多角度的iPod控制器。
- (IBAction) handlePlayPauseTapped {
MPMusicPlayerController *iPodController = [MPMusicPlayerController iPodMusicPlayer];
if (iPodController.playbackState == MPMusicPlaybackStatePlaying) {
[iPodController pause];
} else {
[iPodController play];
}
}
对最佳做法有何想法?
最佳答案
我怀疑您的代码实际上并没有创建新的实例(似乎在内部更可能是单个对象)。当然,这可以在调试器中轻松检查。
为了获得更大的灵活性,我可能会将音乐播放器控制器作为我的类的实例变量,无论如何都会使问题产生争议。