0
我想創建單例,我不確定要使用什麼:dispatch_once或@syncronized。我的問題是:如果我在一個視圖控制器上創建單例對象(使用GCD),然後我去另一個視圖控制器,請問ARC會銷燬我的單例對象嗎?如果我將在另一個視圖控制器中再次需要它,我可以再次創建它嗎?用GCD創建單例dispatc_once和ARC
我想創建單例,我不確定要使用什麼:dispatch_once或@syncronized。我的問題是:如果我在一個視圖控制器上創建單例對象(使用GCD),然後我去另一個視圖控制器,請問ARC會銷燬我的單例對象嗎?如果我將在另一個視圖控制器中再次需要它,我可以再次創建它嗎?用GCD創建單例dispatc_once和ARC
如果你創建的是正確的,沒有人會銷燬它,除了殺死應用程序,因爲這個原因,單身人士應該只用於非常特定的任務。
這是我如何使用ARC創建單身,這是一個類的方法
+ (instancetype)sharedInstance
{
static dispatch_once_t pred = 0;
__strong static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = [[self alloc] init];
});
return _sharedObject;
}
致電+ sharedInstance你的類將確保將總是返回相同的對象