zoukankan      html  css  js  c++  java
  • Objective-C 单例实现

    Objective-C中用的最多的设计模式就是单例,它最常见的实现如下:

    + (WPXXService *)sharedInstance {
        static WPXXService *g_service = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            g_service = [[WPXXService alloc] init];
        });
        return g_service;
    }

    单例,顾名思义,即有且只有一个实例。那么创建函数(sharedInstance)被多次调用,以及多线程场景下,如何保证这一点?这里充分利用了static的特性,static变量只会被初始化一次,之后的函数调用会使用变量上一次的值,而不会重新创建一个,g_service和onceToken都只有一个。另外,对于一个onceToken(理解为票据),dispatch_once的block只会调用一次。当然,这里也可以用锁实现。

  • 相关阅读:
    node.js
    js中文乱码问题
    238. Product of Array Except Self
    接下来要记得东西
    javascript 块内函数
    171. Excel Sheet Column Number
    Moore’s Voting Algorithm
    [ Python ] PIL
    [ Python ] KMP Algorithms
    房之事
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/9603472.html
Copyright © 2011-2022 走看看