2016-01-08 63 views
0

我需要將數據多次保存到NSUserDefaults的在同一類的不同的方法,每一次我需要初始化方式如下:可以NSUserDefaults的只是初始化一次全班

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

是否有可能只初始化一次?例如,聲明它爲屬性,然後在UIViewController中的 - (void)viewDidLoad中初始化它們。

回答

2

沒有必要,因爲這是一個 單身模式所以只有一個實例由 NSUserDefaults自動維護。

更新從@NikolaiRuhe意見後(非常感謝):

沒有必要爲NSUserDefaults提供了可用於大多數情況下,這是由您致電sharedUserDefaults類方法暴露的默認實例。這在技術上不是單身人士,因爲您不必強制使用此默認實例。但是,如果您始終使用sharedUserDefaults,則只會創建一個實例。

如果您有興趣保存輸入,請在您的課程中創建方法以執行加載和保存至NSUserDefaults;例如:

- (void)loadConfig 
{ 
    NSUserDefaults *userDefaults = [NSUserDefaults sharedUserDefaults]; 
    _someObjectProperty = [userDefaults objectForKey:@"someProperty"]; 
    _someIntProperty = [userDefaults integerForKey:@"anotherProperty"]; 
} 
+0

是的,但你可以保存一行代碼初始化他們只是一次,不是嗎? –

+2

@DariusMiliauskas並非真的沒有。你可以爲你的課程編寫一個便利的方法,自動保存每個屬性,然後調用該方法將節省線條並減少錯誤。 – trojanfoe

+0

Nitpicking:它不是一個實際的* singleton *,但框架公開了一個共享的「默認」實例,這對大多數情況都很有用。不過,您可以爲特定用例創建更多實例。 –