• 【单例模式 Objective-C语言】


    一、单例模式

    1.什么叫单例模式:

    单:单个

    例:实例

    也就是说,1个类的对象,无论在何时创建,也无论在什么地方创建,也无论创建多少次,创建出来的都是同1个对象,

    这个叫单例模式

    2.例如,我这儿有1个Person类

    在main.m文件中

    import

    import “Person.h”

    int main(){

    Person *p1 = [Person new];

    Person *p2 = [Person new];

    Person *p3 = [Person new];

    Person *p4 = [Person new];

    }

    这个时候,我就希望p1,p2,p3,p4,实际上是同一个对象,很明显,这个时候不是同一个对象

    不管你在什么时候创建,不管你在什么地方创建,不管你创建多少次,都是同1个对象,这个就叫单例模式

    二、如何实现单例模式

    1.无论如何创建对象,

    我们之前说过,创建对象,实际上是哪个函数的事情啊,

    是不是alloc,

    alloc方法做的事情啊

    无论如何创建对象,最终都会调用alloc方法来创建对象

    不管你是new,还是alloc init,还是你调用类的类方法,来创建对象,

    它本质上,根上,肯定要调用这个alloc方法的

    因为alloc方法,才是在我们内存当中申请空间,创建对象

    2.我们再深度的了解一下这个alloc方法

    在main.m文件中

    #import

    #import “Person.h”

    int main(){

    Person *p1 = [[Person alloc] init];

    //创建对象啊

    //按住option键,点1下alloc,

    //这个方法的签名如下:

    //+ (instancetype)alloc

    //它是类方法,

    //在Xcode文档中,alloc方法的说明如下:

    //Do not override alloc to include initiallization code

    //意思是,千万不要去重写alloc方法

    //instead,implement class-specified version of init…methods

    //而是什么,instead,用什么代替,

    //也就是说,你不要在这个alloc里面写一些初始化的代码,如果说你要写初始化的代码的话,在哪儿写,是不是构造方法里面去写,

    //在init方法里面去写,这是我们之前讲过的,对不对

    //For historical reasons,alloc invokes allocWithZone,

    //由于一些历史的原因,alloc方法它调用了allocWithZone

    }

    3.alloc方法的内部,其实是什么都没有做,就只做了1件事情,调用allocWithZone方法,

    实际上,真真正正去申请空间创建对象的是谁,是allocWithZone

    4.有人说,我还是不太信

    试一下就可以了吧

    我是不是重写1下,allocWithZone方法啊,

    记住,这是个类方法啊

  • 相关阅读:
    网络标准之:IANA定义的传输编码
    数据库基础小练习
    ubuntu 安装串口工具和添加虚拟串口
    SpringBoot开发实用篇
    Execution failed for task ‘:keyboard_utils:compileDebugKotlin‘.
    基于python下django框架 实现外卖点餐系统详细设计
    项目实战:通过axios加载水果库存系统的首页数据
    使用aggird组件实现下滑请求分页从而实现无限滚动的效果
    【HTML】DOCTYPE和lang及字符集
    linux安装mysql
  • 原文地址:https://blog.csdn.net/madoca/article/details/128193896