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;
    }
  • 相关阅读:
    c++函数学习-关于c++函数的林林总总
    STL学习笔记(七) 程序中使用STL
    STL学习笔记(六) 函数对象
    本学期总结与课程建议
    12.19
    12.18Tomcat相关知识
    12.17
    12.16
    12.15
    12.14
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6920647.html
Copyright © 2011-2022 走看看