Ios 在init方法中将BOOL重置为NO

Ios 在init方法中将BOOL重置为NO,ios,boolean,init,nsnotifications,Ios,Boolean,Init,Nsnotifications,我想在UINavigationController的栏中显示一个正在播放的按钮 我有一个类(NowPlayingManager),用于跟踪当前是否正在播放音频文件。我使用另一个类(AudioViewController)中发布的通知来指示播放状态。AudioViewController使用alloc/init创建一个NowPlayingManager实例并将其释放。在收到通知的NowPlayingManager目标中,我将NowPlayingManager的isNowPlaying布尔值设置为Y

我想在UINavigationController的栏中显示一个正在播放的按钮

我有一个类(NowPlayingManager),用于跟踪当前是否正在播放音频文件。我使用另一个类(AudioViewController)中发布的通知来指示播放状态。AudioViewController使用alloc/init创建一个NowPlayingManager实例并将其释放。在收到通知的NowPlayingManager目标中,我将NowPlayingManager的isNowPlaying布尔值设置为YES

当音频停止播放时,我会发送另一个通知,将isNowPlaying bool设置为NO

但是,每次初始化该类时,bool都设置为NO,这是有意义的,因为它是NowPlayingManager的新实例,并且从不显示Now Playing按钮


我如何让IsNowPlayingBool在我的NowPlayingManager的所有实例中保持不变?或者,我应该让应用程序委托在NowPlayingManager而不是AudioViewController中初始化,以便只创建一个实例吗?

如果我理解正确,您应该使用NSUserDefaults。即使你换了班,关闭应用程序等,它也会记住它

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"KeyName"];
然后用以下内容检查布尔值:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"KeyName"] == YES]

{

    //Do whatever you would do when the bool is equal to YES

}

希望这有帮助

您当然可以将isNowPlaying定义为类成员
+(BOOL)isNowPlaying
。看见 有关这方面的更多信息

但是,正如您已经说过的,只创建一个实例(即单例模式)似乎更有用。我建议Matt Galaghers发布关于Singleton和他的可下载合成器Singleton的文章。h:


我和一个单身汉一起去了。我试着远离那个选择,但没有什么是实际可行的。好的选择。我经常在经理课、事件辩论、正面等场合使用它们,。。过了一段时间,没有他们你就活不下去了:-)