iOS用户信息单例的创建

  

UserInfo.h

+ (UserInfo *) sharedInstance;

UserInfo.m

#import "UserInfo.h"

static UserInfo *sharedObj = nil; //第一步:静态实例,并初始化。

@implementation UserInfo

+ (UserInfo*) sharedInstance  //第二步:实例构造检查静态实例是否为nil

{

    @synchronized (self)

    {

        if (sharedObj == nil)

        {

            sharedObj = [[self alloc] init];

        }

    }

    return sharedObj;

}

 

+ (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法

{

    @synchronized (self) {

        if (sharedObj == nil) {

            sharedObj = [super allocWithZone:zone];

            return sharedObj;

        }

    }

    return nil;

}

 

- (id) copyWithZone:(NSZone *)zone //第四步

{

    return self;

}

 

- (id)init

{

    @synchronized(self)

    {

        if (self = [super init])

        {

            self.environment = ENVIRONMENT_FORMAL;

            self.isLogin = NO;

            self.userPhone = @"";

            self.userName = @"";

            self.userSignature = @"";

            self.userId = @"";

 

            // 项目

 

            self.sdkAppId = [NSString stringWithFormat:@"%d",kSdkAppId];

            self.accountType = [NSString stringWithFormat:@"%d",kSdkAccountType];

 

            self.liveType = LIVE_NONE;

            self.isInChatRoom = NO;

            self.isInLiveRoom = NO;

            

            //用户登录信息直播信息环境信息

            NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

            NSDictionary* userDic = [userDefaults objectForKey:@"userInfo"];

            NSDictionary* liveDic = [userDefaults objectForKey:@"liveInfo"];

            NSNumber* environment = [userDefaults objectForKey:@"environment"];

            [self setUserFromLocalInfo:userDic];

            [self setLiveFromLocalInfo:liveDic];

            [self setEnv:environment];

        }

        return self;

    }

}