在我的iOS应用程序中,我有一组单例对象,它们是在应用程序启动时由我的应用程序委托创建的,它们意味着可以从应用程序的每个视图控制器访问。这些对象被存储为应用委托属性。
我想知道,如果这是一个更好的做法,得到引用这些对象,每次我需要它([SharedAppDelegate。singletonName方法]),它还是更好地存储一个私有引用,每个视图控制器谁将需要的对象?
也许有一个权衡基于多少次我将访问该对象?或者我只是想多了,实际上没有什么区别?
为什么在应用程序委托中存储引用,而不是在单例对象本身的静态变量中存储引用-这是常见的做法?
如果你担心性能问题,因为你在单例初始化中初始化了很多对象,那就在需要数据的时候进行延迟初始化。
在应用委托中存储对象不是真正的单例。你可以像这样使用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
在每个视图控制器中创建许多不必要的访问器只是纯粹的多余和浪费时间。