闲话不多叙!直接进入正题
单例设计模式运用较为普遍、广泛且较为简单的设计模式之一,他的设计原理是始终返回一个实例,即一个类始终只有一个实例
单例可以作为全局文件存在 保存一些全局数据;
直接写概念可能有点空泛,举个例子比如登陆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;
}
只是初学者有不对的!漏写望大家不吝赐教!

网友评论