3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
簡介:無需創(chuàng)建一個(gè)單一實(shí)例即可管理核心數(shù)據(jù)堆棧。確實(shí)這樣做可能適得其反。
核心數(shù)據(jù)堆棧恰巧是由應(yīng)用程序委托創(chuàng)建的。但是,重要的是,如所有示例所示,并不是直接從stack(*)中檢索堆棧(主要是托管對象上下文)。而是將上下文傳遞到第一個(gè)視圖控制器,并將上下文或托管對象從上下文將它們從一個(gè)視圖控制器傳遞到下一個(gè)視圖控制器(如訪問核心數(shù)據(jù)堆棧中所述)。這遵循iPhone所有應(yīng)用程序的基本模式:將數(shù)據(jù)或模型控制器從一個(gè)視圖控制器傳遞到下一個(gè)視圖控制器。
如此處所述,單例的典型角色是作為模型控制器。對于Core Data,托管對象上下文已經(jīng)是模型控制器。如果需要,它還使您能夠訪問堆棧的其他部分。此外,在某些情況下(如文檔中所述),您可能希望使用其他上下文來執(zhí)行一組離散操作。因此,視圖控制器的適當(dāng)貨幣單位通常是托管對象上下文,否則是托管對象。使用和傳遞一個(gè)管理堆棧(并從中檢索上下文)的單例對象通常最多會(huì)引入不必要的間接級(jí)別,而最壞的情況會(huì)導(dǎo)致不必要的應(yīng)用程序僵化。
(*)沒有示例使用以下方法檢索上下文:
[[UIApplication delegate] managedObjectContext];

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
我有一個(gè)單例類,可以讓我做我的核心數(shù)據(jù)管理,而且我不把它留在應(yīng)用程序委托中。我寧可不要使用我可能需要說服性的方法(例如,獲取某些對象等)使應(yīng)用程序委托類混亂

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
由于以下原因,我將核心數(shù)據(jù)邏輯留在了App委托中:
1)在其他類別中移動(dòng)此代碼時(shí),我看不出任何真正的優(yōu)勢:委派的概念完全由App委托處理的核心數(shù)據(jù)邏輯實(shí)現(xiàn),因?yàn)楹诵臄?shù)據(jù)模型實(shí)際上是應(yīng)用程序的基本部分;
2)在我看到的所有示例代碼中,包括Apple示例,核心數(shù)據(jù)都是由App委托處理的;
3)即使在Core Data書籍中,讓App委托人處理與核心數(shù)據(jù)相關(guān)的代碼也是一種慣例;
4)就個(gè)人而言,我不認(rèn)為通過為核心數(shù)據(jù)設(shè)置臨時(shí)類實(shí)際上可以提高可讀性或其他任何功能,但這是個(gè)人喜好問題,在這里我不會(huì)爭論哪種方法是最佳方法。對我來說,保持功能的簡單性很重要。
- 3 回答
- 0 關(guān)注
- 512 瀏覽
添加回答
舉報(bào)