在我的iOS应用程序中,我有一组单例对象,这些对象是应用程序启动时由我的应用程序委托创建的,并且它们可以从应用程序的每个视图控制器访问。这些对象存储为app delegate属性。
我想知道每次需要它时是否更好的做法是获取对这些对象的引用([SharedAppDelegate.singletonName方法])或者为每个需要的视图控制器存储私有引用是否更好对象?
根据我访问该对象的次数,可能会有权衡吗?或者我只是过度思考而且几乎没有区别?
非常感谢。
答案 0 :(得分:2)
为什么在app代理中存储引用而不是在singleton对象本身的静态var中存储 - 这是常见的做法?
如果您因为在单例init中初始化许多对象而担心性能问题,那么只需在需要数据时进行延迟初始化。
在app委托中存储对象不是真正的单例。你可以使用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
在每个视图控制器中创建许多不必要的访问器只是纯粹的过度杀伤和浪费时间。