今天在写一个项目的时候,发现了以前经常出现的问题。就是数据固化后,结果数据没有实时更新,导致后续出现一堆问题。在实际项目中,数据层的问题往往影响后续业务、以及架构逻辑问题。所以我花了很长时间研究我已将经常使用的单例+NSUserDefaults的方式。结果发现了一个惊天问题。
那就是千万不要把单例模式和数据固化联系到一起。因为数据固化的时候,其实已经做过单例处理,在做一次单例很有可能导致数据更新不及时,从而出现数据延迟的情况。
+(instancetype)sharedStore{
//确保多线程中只创建一次对象,线程安全的单例
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] initPrivate];
});
return instance;
}
-(instancetype)initPrivate{
self = [super init];
if (self) {
_dictionary = [[NSMutableDictionary alloc] init];
//注册为低内存通知的观察者
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(clearCaches:)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
[self loadUserInfo];
}
return self;
}
在loadUserInfo 加载各种数据,但是结果不及时
网友评论