真正的单例就应该这样写

@implementationfirstVc

//管方说这是由于历史原因还存在.参数管方建义传入null

+(instancetype)allocWithZone:(struct_NSZone*)zone{

return[superallocWithZone:zone];

}

+(instancetype)firstVC{

staticfirstVc* vc;

staticdispatch_once_toneToken;

dispatch_once(&oneToken, ^{

//vc = [[superalloc]init];

vc = [[firstVcallocWithZone:nil]init];

});

returnvc;

}

//重写alloc

+(instancetype)alloc{

return[firstVcfirstVC];

}

-(instancetype)init{

self= [superinit];

returnself;

}


//第二种写法

@implementationfirstVc

staticfirstVc*shareVc;

//管方说这是由于历史原因还存在.参数管方建义传入null

+(instancetype)allocWithZone:(struct_NSZone*)zone{

return[superallocWithZone:zone];

}

+(instancetype)firstVC{

//

//static firstVc * vc;

//static dispatch_once_t oneToken;

//

//dispatch_once(&oneToken, ^{

//vc = [[super alloc] init];

//});

//return vc;

if(!shareVc) {

shareVc= [[superalloc]init];

}

returnshareVc;

}

//重写alloc

+(instancetype)alloc{

return[firstVcfirstVC];

}

-(instancetype)init{

self= [superinit];

returnself;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 什么是单例模式? 单例模式想一个大独裁者,他规定在他的国度里面,所有数据的访问和请求都得经过他,甚至你要...
    GitHubPorter阅读 1,190评论 0 4
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,479评论 2 4
  • 线程间的通信 从子线程回到主线程 延时执行 iOS常见的延时执行有两种方式p 调用NSObject的方法 p 使用...
    一抹月光3053阅读 770评论 1 12
  • 在开发中经常会用到单例设计模式,目的就是为了在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死...
    不要重名就好阅读 556评论 0 0
  • iOS开发—单例模式 一、简单说明: 设计模式:多年软件开发,总结出来的一套经验、方法和工具 二、单例模式说明 (...
    牛仔裤小毛驴阅读 658评论 0 0