OC中的单例实现

本文介绍了Objective-C中单例模式的概念和作用,强调了单例在资源管理和应用程序全局共享中的重要性。详细阐述了在ARC和MRC环境下实现单例的步骤,包括设置静态全局变量、提供类方法、重写内存管理方法等,确保类只有一个实例并遵守NSCopying协议。
摘要由CSDN通过智能技术生成

一、单例模式

保证在程序运行过程中,一个类只有一个实例,该实例易于外界访问,方便对实例个数的控制并节约系统资源。

特点:

1、在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次),一般用于工具类。很多单例存在,例如UIApplication、NSNotification、NSFileManager、NSUserDefaults等.   2、单例对象一旦建立,对象指针保存在静态区,单例对象在堆中分配的内存空间,会在应用程序终止后才被释放。3、单例类无法继承,难以进行类的扩展。

 

二、ARC中单例的实现步骤

1、在类内部提供一个static修饰的全局变量

2、提供一个类方法 ,方法名:+share类名 或者 +default类名,方便外界访问

3、重写+allocWithZone方法,保证只为单例对象分配一次内存空间,实现一个类只有一个实例。

4、重写-copyWithZone方法和-mutableCopyWithZone方法,遵守NSCopying协议、NSMutableCopying协议,可以通过copy、mutableCopy方式创建对象。

#import "Tools.h"

@implementation Tools
// 创建静态对象 防止外部访问
static Tools *_instance;
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
//    @synchronized (self) {
//        // 为了防止多线程同时访问对象,造成多次分配内存空间,所以要加上线程锁
//        //方案一、加互斥锁 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值