Ios 存储单个布尔全局数据值的最佳方法
我需要一些关于开发iOS应用程序设计的最佳实践的建议 以下是我要处理的问题:当iOS设备失去互联网连接(或没有互联网连接并解决这个问题)时,我希望我的应用程序进入某种离线模式,即触发一些事件、发送一些NSNotification、m.b.显示某种警报等,当iOS设备恢复连接时,我想要oposite的东西——将我的应用程序移动到某种在线模式 所以,我想要的是能够从我的一些ViewController中访问应用程序的模式(即检查应用程序是在线还是离线)。我想到了两种存储应用程序状态的方法: 1) 拥有一些AppDelegate的属性,并通过我的AppDelegate从任何地方访问它。好吧,这是一种错误的方法,因为AppDelegate不应该用作应用程序的全局对象,而是用于执行启动初始化和控制应用程序的状态更改 2) 将此信息存储在模型级别。但是我不知道我应该在模型级别上使用什么来达到这样的目的。我不认为使用核心数据或NSUserDefaults是一个好主意,因为我不希望这个属性是持久的,我只需要在当前应用程序运行期间使用它。除了核心数据和默认值,我实际上不知道任何其他模型级技术Ios 存储单个布尔全局数据值的最佳方法,ios,objective-c,Ios,Objective C,我需要一些关于开发iOS应用程序设计的最佳实践的建议 以下是我要处理的问题:当iOS设备失去互联网连接(或没有互联网连接并解决这个问题)时,我希望我的应用程序进入某种离线模式,即触发一些事件、发送一些NSNotification、m.b.显示某种警报等,当iOS设备恢复连接时,我想要oposite的东西——将我的应用程序移动到某种在线模式 所以,我想要的是能够从我的一些ViewController中访问应用程序的模式(即检查应用程序是在线还是离线)。我想到了两种存储应用程序状态的方法: 1) 拥
我不包括任何代码示例,因为这主要是一个理论问题。第二种方法效果最好。您当然不需要任何持久性属性来指示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连接的状态。我在我所有的应用程序中都使用它 以下是您如何处理单身问题:
是的,我正在使用这个类。在我的情况下,我还需要手动将我的应用程序移动到脱机模式,即当后端发生错误时。但不管怎么说,这似乎是一个很好的解决办法,为琐碎的案件。