【单例模式 Objective-C语言】

本文详细介绍了Objective-C中的单例模式,通过分析alloc和allocWithZone方法,展示了如何通过重写allocWithZone来确保始终返回同一个对象。同时,文章遵循了单例模式的规范,提供了创建和访问单例对象的类方法。最后,讨论了单例模式的应用场景,例如用于共享数据以确保整个程序中的数据一致性。
摘要由CSDN通过智能技术生成

一、单例模式

1.什么叫单例模式:

单:单个

例:实例

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

这个叫单例模式

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

在main.m文件中

import <Foundation/Foundation.h>

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 <Foundation/Foundation.h>

#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方法啊,

记住,这是个类方法啊

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值