GCD单例

原创 2015年11月21日 00:45:17

单例实现1

        +(instancetype)sharedSoundTool{
            // 使用static修饰的变量可以直接在block内赋值
            static id obj = nil;
            static dispatch_once_t onceToken;
            // 不开线程
            dispatch_once(&onceToken, ^{
                obj = [[self alloc] init];
            });
            return obj;
        }

单例实现2

        +(instancetype)sharedSync{
            static id obj = nil;
            @synchronized(self) {
                if (obj == nil) {
                    obj = [[self alloc] init];
                }
            }
            return obj;
}

测试效率的代码

        NSLog(@"onece测试");
            CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();

            for (NSInteger index = 0; index < 1000 * 1000; index ++) {
                [ZYSoundTool sharedSoundTool];
            }

            NSLog(@"end = %f",CFAbsoluteTimeGetCurrent() - start);

            NSLog(@"互斥锁");
            start = CFAbsoluteTimeGetCurrent();
            for (NSInteger index = 0; index < 1000 * 1000; index ++) {
                [ZYSoundTool sharedSync];
            }

            NSLog(@"end = %f",CFAbsoluteTimeGetCurrent() - start);

单例

看的出来使用 dispatch_once 实现单例效率要高很多

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Objective-C 常用宏, 自定义log, 单例, GCD,Socket,RGB

#ifndef PrefixHeader_pch #define PrefixHeader_pch #pragma mark - ==================== 头文件 #import ...

ARC环境下两种单例设计模式的比较:GCD和同步锁

A. 单例模式的设计思路: (1)永远只分配一块内存来创建对象; (2)提供一个类方法,返回内部唯一的实例; (3)确保 init 方法只初始化一次; (通常采用懒加载的方式在第一...

(一二三)基于GCD的dispatch_once实现单例设计

要实现单例,关键是要保证类的alloc和init只被调用一次,并且被自身强引用防止释放。 近日读唐巧先生的《iOS开发进阶》,受益匪浅,通过GCD实现单例就是收获之一,下面把这个方法与大家分享。 在...

使用GCD设置单例

#import "Banzhang.h" static Banzhang *instance; @implementation Banzhang //+(id)getBanzhang; .h中定义...

iOS开发 - 第03篇 - 多线程 - 02 - GCD & 单例 & NSOperation

1、GCD - 延迟执行2、GCD - 一次性代码3、GCD - 队列组4、GCD - 小结5、单例模式 --- 重要6、NSOperation --- 重要

GCD单例-懒汉式&饿汉式

懒汉式 MusicPlayer.h#import @interface MusicPlayer : NSObject// 定义全局访问点 + (instancetype)sharedMusicPlay...

单例GCD创建与图片生成缩略图

单例的创建就是创建出一个方法,在整个工程是唯一的,且只被执行一次,下面就是通过GCD来创建一个单例,代码如下: // 单例的创建 + (id)sharedImage{ static disp...

iOS 计时器 单例 GCD 切换控制器倒计时继续读秒

写项目的时候需要一个计时器来做短信验证码的倒计时,场景需求是按钮点击后开始读秒,按钮不可用,当读秒结束按钮可用,在读秒期间切换控制器,或者将应用切换到后台在切换回读秒页面依旧在继续读秒。 代码如下:...

猫猫学iOS(五十二)多线程网络之GCD下单例设计模式

猫猫分享,必须精品原创文章,欢迎转载。转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents单例模式1:单例模式的作用可...

iOS 开发 多线程详解之GCD应用延迟操作,单例设计模式,调度组

GCD延时操作特点:时间特别精确- (void)afterDemo { NSLog(@"start"); /* 参数1 : dispatch_time_t when : 延迟多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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