dispatch_once 常用於單例 : 只創建一次,如果不對對象進行銷燬的話,它會一直存放於內存當中。
代碼說明下:
1:創建單例文件
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(@"這段代碼只會執行一次");
});
執行結果: