码迷,mamicode.com
首页 > 移动开发 > 详细

模仿UIApplication单例

时间:2017-05-30 17:56:47      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:size   use   创建   通过   with   程序   mic   stat   load   

要求:程序一启动就创建创建对象.
创建的对象只能通过share的?方式获取对象.
不能够进行alloc 操作,当执?行alloc时, 程序发生崩溃


1.程序一启动的时候就创建对象.
当类被加载到内存的时候就会调用load的方法,它会比main优先调用

static Persion *_instance;
+(void)load{
//想要保存创建的对象, 要用成员属性,但是现在是类方法, 没有办法访问成员属性.所以搞了一个static的静态变量进行保存
//创建对象
_instance = [[self alloc] init];
}

 


2.保证调用alloc时会产生异常.
重写系统的是alloc方法

+(instancetype)alloc{
  //当调用alloc方法时,先查看一下_instance有没有值,如果已经有值的话,直接抛出异常.
  if(_instance){
    NSException *exception = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Persion instance." userInfo:nil];
    //抛出异常
    [exception raise];
  }
  //保持系统的做法.
  return [super alloc];
}

 

3.通过share方式获取对象

+(instancetype)sharePersion{
    return _instance;
}

 

模仿UIApplication单例

标签:size   use   创建   通过   with   程序   mic   stat   load   

原文地址:http://www.cnblogs.com/xufengyuan/p/6920647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!