Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 存储单个布尔全局数据值的最佳方法_Ios_Objective C - Fatal编程技术网

Ios 存储单个布尔全局数据值的最佳方法

Ios 存储单个布尔全局数据值的最佳方法,ios,objective-c,Ios,Objective C,我需要一些关于开发iOS应用程序设计的最佳实践的建议 以下是我要处理的问题:当iOS设备失去互联网连接(或没有互联网连接并解决这个问题)时,我希望我的应用程序进入某种离线模式,即触发一些事件、发送一些NSNotification、m.b.显示某种警报等,当iOS设备恢复连接时,我想要oposite的东西——将我的应用程序移动到某种在线模式 所以,我想要的是能够从我的一些ViewController中访问应用程序的模式(即检查应用程序是在线还是离线)。我想到了两种存储应用程序状态的方法: 1) 拥

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

以下是我要处理的问题:当iOS设备失去互联网连接(或没有互联网连接并解决这个问题)时,我希望我的应用程序进入某种离线模式,即触发一些事件、发送一些NSNotification、m.b.显示某种警报等,当iOS设备恢复连接时,我想要oposite的东西——将我的应用程序移动到某种在线模式

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

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

2) 将此信息存储在模型级别。但是我不知道我应该在模型级别上使用什么来达到这样的目的。我不认为使用核心数据或NSUserDefaults是一个好主意,因为我不希望这个属性是持久的,我只需要在当前应用程序运行期间使用它。除了核心数据和默认值,我实际上不知道任何其他模型级技术


我不包括任何代码示例,因为这主要是一个理论问题。

第二种方法效果最好。您当然不需要任何持久性属性来指示internet连接。一个好办法是让您的模型成为一个单例类,它为internet连接公开一个只读
BOOL
属性,并且您的视图控制器可以通过键值来订阅其更改。您的模型还可以在内部实现
可达性
类以更新internet连接状态。

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

比如说

@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;

我假设您使用的是Apple的可达性类

我在可达性类上创建了一个类别,以添加一个sharedInstance单例,该单例允许您检查internet连接的状态。我在我所有的应用程序中都使用它

以下是您如何处理单身问题:


是的,我正在使用这个类。在我的情况下,我还需要手动将我的应用程序移动到脱机模式,即当后端发生错误时。但不管怎么说,这似乎是一个很好的解决办法,为琐碎的案件。