0

我想創建單例,我不確定要使用什麼:dispatch_once或@syncronized。我的問題是:如果我在一個視圖控制器上創建單例對象(使用GCD),然後我去另一個視圖控制器,請問ARC會銷燬我的單例對象嗎?如果我將在另一個視圖控制器中再次需要它,我可以再次創建它嗎?用GCD創建單例dispatc_once和ARC

回答

0

如果你創建的是正確的,沒有人會銷燬它,除了殺死應用程序,因爲這個原因,單身人士應該只用於非常特定的任務。
這是我如何使用ARC創建單身,這是一個類的方法

+ (instancetype)sharedInstance 
{ 
    static dispatch_once_t pred = 0; 
    __strong static id _sharedObject = nil; 
    dispatch_once(&pred, ^{ 
     _sharedObject = [[self alloc] init]; 
    }); 
    return _sharedObject; 
} 

致電+ sharedInstance你的類將確保將總是返回相同的對象