美文网首页
iOS开发单例的写法

iOS开发单例的写法

作者: 我的心都有自己喜欢做个爱豆一样 | 来源:发表于2018-10-18 14:55 被阅读0次

    单例,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开发单例的写法

          本文链接:https://www.haomeiwen.com/subject/iyzjzftx.html