-
【单例模式 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