單例模式

好久沒在這發表文章了,我把我在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;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容