在我的 iOS 应用程序中,我有一组单例对象,它们是在应用程序启动时由我的应用程序委托(delegate)创建的,它们应该可以从应用程序的每个 View Controller 访问。这些对象存储为应用委托(delegate)属性。
我想知道每次需要时获取对这些对象的引用是否更好([SharedAppDelegate.singletonName 方法]),还是为每个需要的 View Controller 存储私有(private)引用更好对象?
也许需要根据我访问该对象的次数进行权衡?或者我只是想得太多了,实际上没有什么区别?
提前致谢。
最佳答案
为什么将引用存储在应用程序委托(delegate)中,而不是在单例对象本身的静态变量中——这是常见的做法?
如果您担心性能问题,因为您在单例 init 中初始化了很多对象,请在需要数据时进行惰性初始化。
在应用委托(delegate)中存储一个对象并不是真正的单例。例如,您可以使用 GCD 创建单例。
@interface MYSingleton
+ (id)sharedInstance;
@end
@implementation MYSingleton
+ (id)sharedInstance {
static dispatch_once_t once;
static MyFoo *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
@end
在每个 View Controller 中创建许多不必要的访问器纯粹是矫枉过正和浪费时间。
关于iOS:按需获取对单例的引用还是保留它更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723996/