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;
}
}
iOS用户信息单例的创建的更多相关文章
- iOS开发之单例设计模式(完整正确版本)
单例的意思从字面上就可以略知一二,所谓单例就是确保在程序运行过程中只创建一个对象实例.可以用于需要被多次广泛或者说多次使用的资源中,比如我们常见的网络请求类.工具类以及其它管理类等.比如我iOS开发中 ...
- IOS中的单例设计模式
单例设计模式是IOS开发中一种很重要很常用的一种设计模式.它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例.下面是苹果官方文档中关于单例模式的图片: 如图所示,左边的图是默认的 ...
- iOS 设计模式之单例
设计模式:单例 一. 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并 ...
- iOS Dev (67) 单例的实现
iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game D ...
- Spring IoC 中的(Singleton)单例对象创建过程探索
前言 之前将spring framework 源码导入了idea,后来折腾调试了一下,于是研究了一下最简单的singleton对象在spring中是如何创建的.这里所谓的简单,就是指无属性注入,无复杂 ...
- iOS - OC SingleClass 单例类
前言 单例对象能够被整个程序所操作.对于一个单例类,无论初始化单例对象多少次,也只能有一个单例对象存在,并且该对象是全局的,能够被整个系统访问到. 特点: 在内存中只有一个实例 提供一个全局的访问点 ...
- iOS设计模式之单例
单例模式的意思就是这个类只有一个实例,这个类就是单例类.在iOS中有不少都是单例NSNull,NSFileManager ,UIApplication,NSUserDefaults ,UIDevice ...
- iOS中编写单例类的心得
单例 1.认识过的单例类有哪些: NSUserDefaults.NSNotificationCenter.NSFileManager.UIApplication 2.单例类 单例类某个类在代码编写时使 ...
- iOS - Swift SingleClass 单例类
前言 单例对象能够被整个程序所操作.对于一个单例类,无论初始化单例对象多少次,也只能有一个单例对象存在,并且该对象是全局的,能够被整个系统访问到. 单例类的创建 1.1 单例类的创建 1 单例类的创建 ...
随机推荐
- 网络编程之socket
网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...
- 【xcode5的使用】
layout: post title: "WWDC 2013 Session笔记 - Xcode5和ObjC新特性" date: 2013-06-13 10:05 comments ...
- centos7修改主机名
临时修改: hostname centos7 永久修改: # hostnamectl set-hostname cen07
- DTD文档模型和HTML基础
html是超文本标记语言,现在常用到的2中文档格式是html5和XHTML 1.0 Transitiona(过渡). <!DOCTYPE html> <!--当前文档为html5-- ...
- Cycles渲染研究测试效果图
从左到右:.贴图镂空透明 2.纹理半透明 3.纹理 4.材质半透明 5.材质 输入输出节点信息如下: ############################################# ...
- SQL SERVER中的扩展属性
以前在SQL SERVER建表时,总看到扩展属性,但一直未使用过.今天研究下: 增加扩展属性: 语法: sp_addextendedproperty [ @name = ] { 'property_n ...
- 注解:【无连接表的】Hibernate双向1->N关联
Person与Address关联:双向1->N,[无连接表的],推荐使用 #由N端控制关联关系 #对于指定了mappedBy属性的@OneToMany,@ManyToMany,@OneToOne ...
- 转换一个矩阵(2维数组)为HTML Table
matrix[row][col],比如[ [ "Name", "Age" ], [ "Sam", 12 ] ] function (m) { ...
- pyqt5 开发环境
pyqt5 pycharm mac下开发环境 brew install python3 安装python3 brew install pyqt5 配置pycharm http://blog.csdn. ...
- iOS模糊效果(毛玻璃效果)的实现
前一段时间项目中用到毛玻璃效果,那时对UIBlurEffect类和 UIVisualEffectView这两个类做了一部分了解.但当时并没有去特别的深入研究,直到项目做完后,才静下心来好好研究了一番. ...