美文网首页活好
ios - 多线程之九:GCD_once

ios - 多线程之九:GCD_once

作者: 乐意先生 | 来源:发表于2017-05-09 14:15 被阅读29次

    dispatch_once 常用于单例 : 只创建一次,如果不对对象进行销毁的话,它会一直存放于内存当中。

    代码说明下:

    1:创建单例文件


    单例文件.png

    2:.h文件中生命类方法

    + (instancetype) initWithName:(NSString *)nameString;
    

    3:.m文件中实现

    static ShareObject *object = nil;
    + (instancetype) initWithName:(NSString *)nameString
    {
    static dispatch_once_t oncet;
    dispatch_once(&oncet, ^{
        NSLog(@"仅执行一次");
        object = [[ShareObject alloc] init];
        object.nameString = nameString;
    });
    return object;
    }
    

    结合 dispatch_once 的特性,我们可以灵活使用,比如在程序的整个生命周期当中只执行一次,之后不会发生变化,此时我们就可以使用 dispatch_once 。

    //GCD - 使用 dispatch_once 控制代码只执行一次
    /*
        注意事项:
        1:必须要用 static 进行修饰;
     */
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSLog(@"这段代码只会执行一次");
    
    });
    

    执行结果:

    dispatch_once

    相关文章

      网友评论

        本文标题:ios - 多线程之九:GCD_once

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