我是 cocoa 和 mac os x 开发的新手。我的应用程序的不同组件使用特定位置来存储数据等,该位置在应用程序启动时确定。例如用户主目录中的子目录、系统的临时目录等以及我的可可应用程序中不同类使用的类似运行时信息。此信息应在应用程序启动时确定一次,并在以后重复使用。
每个组件都应该能够访问一个中心组件来获取这些信息,而不是每个组件都一遍又一遍地计算。
可可是否提供了一些地方来保存这些数据?还是我们创建单例对象?有任何想法吗 ?
访问共享模型资源的常见模式是通过单例模型控制器类,就像你写的那样。以下是我管理创建/访问单例的方式:
+ (id)sharedInstance {
static dispatch_once_t once;
static SomeModelControllerClass * sharedInstance;
dispatch_once(&once, ^ { sharedInstance = [[self alloc] init]; });
return sharedInstance;
}
该函数dispatch_once
保证由dispatch_once_t
标记“once”标识的给定代码块只执行一次。
另一个更重要的问题是如何创建/存储模型控制器将管理的数据。有几个选择: