存储单个BOOL全局数据值的最佳方法

Dem*_*ath 2 objective-c ios

我需要一些关于开发iOS应用程序设计的最佳实践的建议

这就是我正在处理的问题:当iOS设备丢失互联网连接(或者没有互联网连接)时,我希望我的应用程序进入某种离线模式,即发送一些事件,发送一些NSNotifications,mb显示某种类型的警报等.因此,当iOS设备获得它的连接时我想要相反的东西 - 将我的应用程序移动到某种在线模式.

所以,我想要的是能够从我的一些ViewControllers中访问应用程序模式(即检查应用程序是在线还是离线).我正在考虑两种存储应用程序状态的方法:

1)拥有一些AppDelegate的属性,并通过我的AppDelegate从任何地方访问它.AFAIK,这是一种错误的方法,因为AppDelegate不应该用作应用程序的全局对象,而是用于启动初始化和控制应用程序的状态更改.

2)将此信息存储在模型级别.但我不知道为了这个目的我应该在Model级别上使用什么.我不认为使用Core Data或NSUserDefaults是一个好主意,因为我不希望这个属性是持久的,我只在当前的应用程序运行期间需要它.除了Core Data和NSUserDefaults之外,我实际上并不了解任何其他模型级技术.

我没有包含任何代码示例,因为它主要是一个理论问题.

Bry*_*hen 6

您可以使用单例模式并将变量存储为属性

例如

@interface GlobalData : NSObject

@property BOOL connectionAvailable;

+ (GlobalData *)sharedInstance;

@end

@implementation

+ (GlobalData *)sharedInstance {
    static GlobalData *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[GlobalData alloc] init];
    });
    return sharedInstance;
}

@end

// --- in some method
[GlobalData sharedInstance].connectionAvailable = /* connection state */;

// --- in some other method
BOOL connectionAvailable = [GlobalData sharedInstance].connectionAvailable;
Run Code Online (Sandbox Code Playgroud)