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

作者: 没得到的是你没遇到呢 | 来源:发表于2016-04-06 19:27 被阅读77次

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

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

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

    直接写概念可能有点空泛,举个例子比如登陆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中较常用的一种设计:单例

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