如何使可达性作为单例工作?这就是我想做的...
我有一个应用程序。当它启动时,我想要一个单例并使用可达性来保持网络状态。然后我想从其他控制器访问单例并检查网络状态。例如,我希望每次用户单击一个选项卡并显示屏幕以检查互联网状态并启用或禁用按钮。
我知道这个问题很笼统,但我很困惑。我目前正在使用可达性 2.2
任何提示或想法甚至指南都将不胜感激。
最后一个问题....单例用法有多“道德”?更接近 MVC 模型是最佳实践吗?
再次感谢
如何使可达性作为单例工作?这就是我想做的...
我有一个应用程序。当它启动时,我想要一个单例并使用可达性来保持网络状态。然后我想从其他控制器访问单例并检查网络状态。例如,我希望每次用户单击一个选项卡并显示屏幕以检查互联网状态并启用或禁用按钮。
我知道这个问题很笼统,但我很困惑。我目前正在使用可达性 2.2
任何提示或想法甚至指南都将不胜感激。
最后一个问题....单例用法有多“道德”?更接近 MVC 模型是最佳实践吗?
再次感谢
单身人士很好。可达性可以是一个非常明智的单例。您应该知道Apple 的 Cocoa Fundamentals Guide中的文档“Creating a Singleton Instance” ,但请仔细阅读文本。他们提供的代码很少是您需要的,并且可能会导致更多问题,然后才能解决。仅在对象的多个副本是错误的情况下才适用(例如,由于对象管理唯一资源而错误)。在这些情况下,我倾向于断言-init
而不是重载allocWithZone:
,因为我宁愿强迫开发人员进行正确的调用(+sharedInstance
) 而不是悄悄地为他们修复它,并让他们认为他们已经创建了两个实例,而实际上有一个实例(至少在单例是可变的或保持状态的情况下)。
在这个问题中有一个很好的关于好的单例模式的讨论。我喜欢@Robbie Hanson 在我自己的代码中的回答,因为它是线程安全的。