+ (instancetype)sharedInstance{
static Student *stu = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
stu = [[Student alloc]init];
});
return stu;
}
使用dispatch_once的注意事項:
- 此函數(shù)接收類型為dispatch_once_t的特殊參數(shù)兵钮,還有一個塊參數(shù)。對于onceToken標(biāo)記,該函數(shù)保證相關(guān)的塊必定會執(zhí)行,且執(zhí)行一次。此操作完全是線程安全的
- 對于在dispatch_once中的創(chuàng)建的實例對象必須確保其只有一個茉兰,所以使用static修飾
注意:對于只執(zhí)行一次的塊來說,對于傳入函數(shù)的標(biāo)記參數(shù)必須完全相同欣簇,因此规脸,開發(fā)時需要將標(biāo)記變量聲明在static或global作用于中。