我想在UINavigationController的栏中显示一个正在播放的按钮。
我有一个类(NowPlayingManager),用于跟踪当前是否正在播放音频文件。我使用在另一个类(AudioViewController)中发布的通知来指示播放状态。 AudioViewController使用alloc / init创建NowPlayingManager的实例并将其释放。在NowPlayingManager的收到通知的目标中,我将NowPlayingManager的isNowPlaying布尔值设置为YES。
当音频停止播放时,我发送另一个通知,将isNowPlaying bool设置为NO。
但是,每次初始化类时,bool都设置为NO,这是有道理的,因为它是NowPlayingManager的新实例,并且永远不会显示正在播放按钮。
如何让isNowPlaying bool在我的NowPlayingManager的所有实例中持续存在?或者说,我应该让app委托初始化NowPlayingManager而不是AudioViewController,以便只创建一个实例吗?
答案 0 :(得分:0)
如果我理解正确,您应该使用NSUserDefaults。即使您更改了课程,关闭应用程序等,这也会记住它。
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"KeyName"];
然后检查bool:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"KeyName"] == YES]
{
//Do whatever you would do when the bool is equal to YES
}
希望这有帮助!
答案 1 :(得分:0)
您当然可以将isNowPlaying定义为类成员+ (BOOL) isNowPlaying
。看到
Objective-C: how to declare a static member that is visible to subclasses?了解有关此内容的更多信息。
但正如你所说,创建一个实例,即单例模式似乎更有用。我建议Matt Galaghers发布关于单身人士及其可下载的SynthesizeSingleton.h的信息:
http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html