iOS开发单例的写法

单例,singleton Instance, 特点:全局里独一无二的,只有一个实例,只初始化一次;

一般是两种写法,一个是GCD的写法,一个是普通的加锁的写法;

GCD写法

+ (id)sharedInstance {


    staticInstance*sharedInstance =nil;


    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[Instancealloc]init];


    });

    returnsharedInstance;

}

+ (id)sharedInstance {


    staticInstance*sharedInstance =nil;


    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[Instancealloc]init];


    });

    returnsharedInstance;

}

onceToken默认值是0,只有等于0的时候才会执行大括号里的代码(也就是初始化),初始化操作执行后,就会变成一个不为零的数,保证初始化一次。

普通写法


+ (id)sharedInstance {

    staticInstance*sharedInstance =nil;

    @synchronized (self) {

        if(sharedInstance ==nil) {

            sharedInstance = [[Instancealloc]init];

        }


    }

    returnsharedInstance;

}

你可能感兴趣的:(iOS开发单例的写法)