zoukankan      html  css  js  c++  java
  • iOS下单例模式实现(一)(objective-c arc gcd)

    单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

    这里主要介绍下在arc下,利用gcd实现单例。

    第一步:声明一个静态实例 

    static SoundTool *_instance;

    第二步:重写初始化方法

    + (id)allocWithZone:(struct _NSZone *)zone

    在对象初始化分配内存的时候都会调用这个方法,重写该方法时,即便用户没用通过shared方法获取实例,自己初始化依然可以保证得到的是同一个实例。

    在gcd后,多线程下保证一个代码只被执行一次提供了一个便捷的方式就是dispatch_once。

    这个代码方法并不需要认真记忆。在xcode中已经内置了代码段。敲下dispath_once就会有智能提示。

    第三步:声明一个类方法共享实例

    + (SoundTool *)sharedSoundTool

    @implementation SoundTool
    
    static SoundTool *_instance;
    
    + (SoundTool *)sharedSoundTool
    
    {
        static dispatch_once_t onceToken;
    
        dispatch_once(&onceToken, ^{
    
            _instance=[self new];
        });
    
        return _instance;
    }
    
    + (id)allocWithZone:(struct _NSZone *)zone
    {
        static dispatch_once_t onceToken;
    
        dispatch_once(&onceToken, ^{
    
            _instance=[super allocWithZone:zone];
    
        });
        return_instance;
    }
    @end
    
  • 相关阅读:
    java容器
    利用java mail发送邮件
    利用java mail发送邮件
    hbase java API跟新数据,创建表
    hbase java API跟新数据,创建表
    利用httpclient和mysql模拟搜索引擎
    利用httpclient和mysql模拟搜索引擎
    HBase 官方文档
    HBase 官方文档
    安装yum
  • 原文地址:https://www.cnblogs.com/lacklock/p/3754214.html
Copyright © 2011-2022 走看看