zoukankan      html  css  js  c++  java
  • IOS中实现单例

      在IOS中,所有对象的内存分配的方法都会调用allocWithZone,比如构造函数alloc,所以重写这个方法就可以实现单例。

      Xcode中预先写好了实现代码的快捷指令,敲dispatch_once就会看到。这个是有GCD实现的单例代码。

    实现代码如下:

    +(id)allocWithZone:(struct _NSZone *)zone
    {
        static LYDemo * instance;
        //是线程安全的,onceToKen默认是0
        static dispatch_once_t onceToken;
        //dispatch_once宏可以保证代码中的代码只会被执行一次。
        dispatch_once(&onceToken, ^{
            instance = [super allocWithZone:zone];
        });
        return instance;
    }
    //上面代码只是保证了这个类只能有一个实例,而易读性略差,我们应该模仿系统的单例方式。
    +(instancetype)sharedDemo
    {
        return [[self alloc]init];
    }
    

     实现单例的步骤:

    1.重写allocWithZone方法,使用GCD预先写好的代码块dispatch_once snippet。

    2.创建一个以shared开头的方法,模仿系统的单例。

  • 相关阅读:
    Vim学习指南
    frambuffer lcd.c
    工控显示界面
    ubuntu nfs 开发板
    java初学1
    使用多态来实现数据库之间的切换
    Space Shooter 太空射击
    CandyCrush 糖果传奇
    进制转换以及原码、反码、补码
    winform小知识
  • 原文地址:https://www.cnblogs.com/congliang/p/SingleInstance.html
Copyright © 2011-2022 走看看