美文网首页
IOS 标准单例

IOS 标准单例

作者: dicesc | 来源:发表于2016-08-07 19:05 被阅读40次

    在ARC模式下 单例
    主要重写 两个方法

    • (instancetype)allocWithZone:(struct _NSZone *)zone
    • (id)copyWithZone:(NSZone *)zone
      示例代码
      @implementation Person
      static id instance;

    //重写allocWithZone分配内存的方法,保证该方法永远只会被执行一次
    +(instancetype)allocWithZone:(struct _NSZone *)zone {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    instance = [super allocWithZone:zone];
    });
    return instance;
    }

    //自定义单列方法
    +(instancetype)sharedPerson {

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [Person new];
    });
    return instance;
    

    }

    //重写copyWithZone函数
    -(id)copyWithZone:(NSZone *)zone {
    return instance;
    }


    二 MRC下面还需要多加下面的几个方法

    -(oneway void)release {}

    -(instancetype)retain{
    return instance;
    }

    -(NSUInteger)retainCount{
    return 1;
    }
    -(instancetype)autorelease {
    return instance;
    }

    相关文章

      网友评论

          本文标题:IOS 标准单例

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