单例设计模式

来源:互联网 发布:武汉网络推广外包 编辑:程序博客网 时间:2024/06/05 05:24

1. 单例的写法

+ (Singleton *)shareSingleton {// 第一种写法

    static Singleton *single;

    if (!single) {

        single = [Singleton new];

    }

    return single;

}



+ (id)sharedThemeManagerWithName:(NSString *)name {// 第二种写法(单线程,加锁)

    static ThemeManager *themeManager;

    @synchronized(self) {//@synchronized(self) 让这段代码处于atomic状态, 如果多个线程进入这段代码 这段代码只能是一个线程执行

        if (themeManager == nil) {

            themeManager = [[ThemeManager alloc] initWithName:name];

        }

    }

    return themeManager;

}



+ (Singleton *)shareSingleton { // 第三种写法

    static Singleton *single;

    static dispatch_once_t oneToken;

    dispatch_once(&oneToken, ^{

        single = [Singleton new];

    });

    

    return single;

}


2. #warning csdn(单例的常见写法): main, default, standard, share

// 系统为了保证某些对象在工程里唯一使用单例创建对象比如上面4

// 单例方法一般都是+号方法返回当前类型的对象方法一般以一些关键词开头比如main, default, standard, share, 然后加上类名基本上就是一个单例方法


0 0
原创粉丝点击