好久沒在這發表文章了,我把我在csdn寫的文章都遷移過來,希望能幫到一些初學者。
單例模式是一種常用的軟件設計模式。 在這種模式中,單例模式的類必須只有一個實例。一般用于保存用戶的信息,統一放在一個實例中,程序任何地方都可以通過這個實例對象獲得或更改信息。只實現一次,它的生命周期與程序的生命周期相同。
-
重寫初始化方法
重寫初始化方法,當一個類進行初始化時,如果為空,則進行重寫的初始化,如果不為空,則返回為原來的實例。
static UserData *userData = nil;
// 單例初始化方法,一般以share或default開頭
+ (UserData *)shareInstance {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
userData = [[UserData alloc] init];
});
return userData;
}
- NSUserDefaults
NSUserDefaults是一個輕量化的數據持久化方式,它可以方便的用于本地保存用戶名、密碼、配置信息等,是一個單例。
// 定義UserDefaults存儲的key
static NSString * const LoginInfoKey = @"LoginInfo";
int main(int argc, const char * argv[]) {
@autoreleasepool {
//------------------- 存 -----------------------
NSDictionary *userInfo = @{@"username" : @"admin",@"password" : @"123456"};
// 單例,不用alloc init
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// 保存登錄信息(object只能是系統提供的對象,如:NSString, NSDictionary, NSArray, NSDate),不能是基本數據類型與自定義對象
[userDefaults setObject:userInfo forKey:LoginInfoKey];
NSLog(@"%@", userInfo);
//------------------- 取 -----------------------
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// 根據存入的key取值
NSDictionary *dic = [userDefaults objectForKey:LoginInfoKey];
// 移除
[userDefaults removeObjectForKey:LoginInfoKey];
// iOS8以前,存、刪除完后,需要同步
[userDefaults synchronize];
}
return 0;
}