ios - 多線程之九:GCD_once

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章