OC中较常用的一种设计:单例

闲话不多叙!直接进入正题

单例设计模式运用较为普遍、广泛且较为简单的设计模式之一,他的设计原理是始终返回一个实例,即一个类始终只有一个实例

单例可以作为全局文件存在 保存一些全局数据;

直接写概念可能有点空泛,举个例子比如登陆APP使用的账号和密码一般就要用单例来保留:上程序!!!

首先建造一个User类在.h里声明

@property(nonatomic,copy)NSString *name;

@property(nonatomic, copy)NSString *mima;

然后再.m里创建一个静态变量(ps:静态变量只有在整个程序结束退出是才能被释放)

static User *user = nil;

首先我们在先写一个类方法为这个静态变量分配内存

+(id)sharper{                       

@synchronized(self) {

if (user == nil) {              /*这里我们用if判断变量是否为空只有当他

user = [[User alloc]init];   为空时才对他分配内存(这是.m里的实                   

}                                               现不要忘了在.h里声明

}

return user;

}

然后我们要保证这个变量在初始化时也不会被分配新的内存;我们可以重写alloc

+(instancetype)allocWithZone:(struct _NSZone *)zone{

if (user == nil ) {

user = [super allocWithZone:zone];

}

最后是保证他再被copy时也没有被改变

-(id)copyWithZone:(NSZone *)zone{

return user;

}

只是初学者有不对的!漏写望大家不吝赐教!

OC中较常用的一种设计:单例_第1张图片

你可能感兴趣的:(OC中较常用的一种设计:单例)