IOS小技巧——如何使用GCD创建单例模式

原创 2015年07月08日 01:11:21

步骤
1.建一个全局的变量
2.在allocWithZone: 方法中拦截内存的分配,并在方法内部加线程锁,防止多个线程同时加载方法
3.在新建一个share方法,方便外界分辨

1.ARC
@interface HMDataTool : NSObject
+ (instancetype)sharedDataTool;
@end

@implementation HMDataTool
// 用来保存唯一的单例对象
static id _instace;
// 为什么调用allocWithZone:方法而不调用alloc方法呢 ??
// 因为调用alloc方法,alloc方法实质上是调用allWihtZone:方法
+ (id)allocWithZone:(struct _NSZone *)zone
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instace = [super allocWithZone:zone];
    });
    return _instace;
}
+ (instancetype)sharedDataTool
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instace = [[self alloc] init];
    });
    return _instace;
}

- (id)copyWithZone:(NSZone *)zone
{
    return _instace;
}
@end
一些小知识补充

1.Static关键字的作用:{

// 加上了static 关键字,这个全局变量只能在该文件中使用,不能用extern(引用某个全局变量(并非定义))引用,以后声明全局变量,尽量用static
static id _person;

/*
 static :修饰变量
 1> 修饰全局变量
 *全局变量的作用域仅限于当前文件内部

 2> 修饰局部变量:
 *局部变量的生命周期 跟 全局变量类似
 *但是不能改变作用域(只能在函数内存在,出了函数外引用不到)
 * 能保证局部变量永远只初始化依次,再程序运行过程中,永远只有一份内存
 */
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

ios--GCD实现单例模式

单例模式,也有人称之为单粒模式,从字面上就不难理解,单例模式既指一个类只有一个实例对象,现在我就用GCD来实现单例模式 首先创建一个person类,在person类的.m文件中创建多个对象,如下: ...
  • Arack
  • Arack
  • 2016年08月04日 21:27
  • 211

单例模式在iOS中的应用——三种创建单例方法对比

单例模式优点 单例模式在内存中只有一个实例,减少了内存开支。特别是一个对象需要频繁的创建、销毁时,而创建与销毁的性能有无法优化,单例模式的优势就非常明显。单例模式只生成一个实例,减少了系统性能开...

iOS设计模式——单例模式,你看我就够了.两行代码创建单例(兼容ARC/MRC)

单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。 在iOS开发中,单例模式是非常有用的一种设计模式。 OS SDK中也有许多类使用了单例模式,例如,UIApp...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static MyGizmoClass *...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法:static MyGizmoClass *sharedGizmoManager = nil; + (MyG...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static MyGizmoClass *...

单例模式 - GCD 、兼容ARC和MRC

单例模式 - GCD 、兼容ARC和MRC 单例模式的作用: 1,可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问 2,从而方便地控制了...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS小技巧——如何使用GCD创建单例模式
举报原因:
原因补充:

(最多只允许输入30个字)