zoukankan      html  css  js  c++  java
  • 模仿UIApplication单例

    要求:程序一启动就创建创建对象.
    创建的对象只能通过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;
    }
  • 相关阅读:
    第一章epoll
    sk_buff结构--转载
    邻居子系统1.5 neigh output
    netfilter内核态与用户态 通信 之 sockopt
    邻居子系统1.4
    邻居子系统 1.3
    邻居子系统 1.2
    邻居子系统 1.1
    linux 内核 tasklets 原理以及工作队列
    linux 内核 同步原理
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6920647.html
Copyright © 2011-2022 走看看