单例模式

作者: CharlesAn | 来源:发表于2017-05-26 11:15 被阅读3次

    好久没在这发表文章了,我把我在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;
    }
    

    相关文章

      网友评论

        本文标题:单例模式

        本文链接:https://www.haomeiwen.com/subject/jygtfxtx.html