我使用共享实例类来保存基本用户的信息,如user_id,年龄,姓名等等。现在我需要在注销期间一次删除所有数据。我不想一个一个地删除数据。有什么方法可以做到这一点吗?任何建议都会很棒!!提前谢谢。
到目前为止我做了什么,但它没有用。我还尝试了一些其他方法,无论我在互联网上找到哪种方式,但都没有用:
static GlobalValues *sharedManager = nil;
+(GlobalValues*)sharedManager{
//static id sharedManager;
static dispatch_once_t once;
dispatch_once(&once, ^{
sharedManager = [[GlobalValues alloc] init];
});
return sharedManager;
}
+(void)resetSharedInstance {
@synchronized(self) {
sharedManager = nil;
}
}
答案 0 :(得分:1)
我总是使用这个策略,它要清除对象的属性而不是对象本身,并根据需要重新设置它们
·H
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@interface DataClass : NSObject
@property(nonatomic,retain)NSArray*moreNames;
+(DataClass*)getInstance;
@end
的.m
#import "DataClass.h"
@implementation DataClass
static DataClass *instance = nil;
+(DataClass *)getInstance
{
@synchronized(self)
{
if(instance==nil)
{
instance= [DataClass new];
instance.moreNames=[[NSArray alloc]initWithObjects:NSLocalizedString(@"moreName1", nil),NSLocalizedString(@"moreName2", nil),NSLocalizedString(@"moreName3", nil),NSLocalizedString(@"moreName4", nil),NSLocalizedString(@"moreName5", nil),NSLocalizedString(@"moreName6", nil),NSLocalizedString(@"moreName7", nil),NSLocalizedString(@"moreName8", nil),nil];
}
}
return instance;
}
-(void)clearContents
{
self.moreNames = nil
}
@end
答案 1 :(得分:0)
您可以将nil分配给静态变量。这里的问题是第二次不会调用分配给dispatch_once的init块,因此您无法再次初始化shareinstance。
我同意@ Sh_Khan的策略。根据你想要的我想,我想你可以将所有数据放在一个模型中(user_id,age,name ...),然后在注销时重置模型:
+ (DataManager *)shareInstance {
//static id sharedManager;
static dispatch_once_t once;
dispatch_once(&once, ^{
sharedManager = [[DataManager alloc] init];
sharedManager.model = [Model new];
});
return sharedManager;
}
+ (void)resetSharedInstance {
@synchronized(self) {
sharedManager.model = [Model new];
}
}
答案 2 :(得分:-2)
静态变量不能用nil分配。静态变量只能在一个循环中初始化一次。后续初始化将跳过它并继续到下一行。