我有時在我的項目中使用Singleton(用於存儲幾個不同類使用的數據),我想爲什麼不使用我的AppDeletage,因爲它已經是一個Singleton並且易於訪問。這是不好的做法,如果是這樣,爲什麼?使用你的AppDelegate作爲你的Singleton是不好的做法嗎?
回答
沒有正確答案,這一個。你會在這方面得到很多意見。我看不出有什麼問題與使用AppDelegate的,我做我的所有的應用程序:
- 委託是iPhone應用程序實際上是強制性的,
- 它的存在對於應用程序的生命週期;
- 並且可以從程序中的任何地方訪問它(儘管不要濫用它!)。
儘管如此,我們必須保持警惕,以便不一定必須在那裏的代碼不在那裏。你不希望你的AppDelegate變得龐大而不可維護。
的問題已經回答過了StackOverflow上:
Application Design and AppDelegate
對這些問題的答案可以幫助你也。
AppDelegate應該處理啓動狀態,背景條目等狀態下的應用程序行爲。你不應該把它變得更復雜,因爲它不是一個好的設計模式。但是你可以隨時在你的AppDelegate中保存對你的dataStore類的引用,並通過AppDelegate訪問它。通過這種方式,您可以從AppDelegate中抽象存儲數據,但仍然可以輕鬆實現。
那麼,在數據抽象方面,它可能是在不安全的一面位,但我相信它是在內存中方便的地方了。你應該做什麼,可能是用訪問器方法封裝變量,以便你有一個地方做併發相關的操作(如果有的話)
但是,如果你的意思是從一個UI類傳遞對象到另一個,那麼也許你應該使用別的東西,像其它設置一個成員變量,或者使用數據存儲等
對於相關的整個應用程序,我用的是AppDelegate中的控制器代碼小塊。如果有一種明智的方法將代碼拆分爲單獨的控制器對象,那麼這將是更可取的,因爲我看到應用程序代表已經膨脹到無法管理的大小。
它也可以是一個很好的方式,以「singletonize」控制器對象,如果沒有你以後要對他們有一個以上的燃燒你的橋樑。
我居然把一個類的方法在AppDelegate中訪問它,所以我可以做這樣的事情:
[[AppDelegate get].dataStore getRecordNumber:x] // or
[[AppDelegate get].server refreshData]
但我敢肯定,還有那些認爲這是在團隊環境不好的設計。
我得到了很多廢話的這一點,但對於具有全球意義短小的數據,我沒有任何問題都保持在App代表。
更大的數據塊需要一個商店的出的內存(核心數據,文件系統,SQLlite,或者你有什麼)。
我的第一個應用程序有周圍的數據晃盪(NSDictionaries中的文本,各種大小的UIImages等)的TON。我構建了一個數據管理單例,將它全部保存在一個地方,並處理服務器對更新的請求。它的工作沒關係。如果我現在知道我現在知道的,那麼我可能會想出一個核心數據同步策略。
這真的取決於 - 我正在編寫一個遊戲應用程序,我需要一個單身人員班來管理分數,玩家等......在這種情況下,Singleton比Core Data的效果更好。 我正在寫另一個應用程序,它實際存儲數據並在線下載內容。在這種情況下,我正在使用核心數據。 – darksky
是的,那也沒關係。我也因爲不堅定的反單身而得到獎勵。我認爲這是一個很好的工具,像很多好工具一樣,可能會被濫用。 –
- 1. 超載你的主要方法是不好的做法嗎?
- 2. Singleton模式的使用在android中是不好的做法嗎?
- 3. 使用* str ++是不好的做法嗎?
- 4. 使用collections.OrderedDict是不好的做法嗎?
- 5. 使用LinkButtons作爲超鏈接是不好的做法嗎?
- 6. 使用Type作爲'Property'是不好的做法嗎?
- 7. 你認爲在頁面上使用很多CSS3的東西是不好的嗎?
- 8. C++的char [100] =「你好」不起作用
- 9. 使用document.on()會被認爲是不好的做法嗎?
- 10. VbScript(VBS)你好嗎?
- 11. 使用泛型作爲函數的返回值是不好的做法嗎?
- 12. 你會認爲什麼做法是「pythonic」?
- 13. 使用AppDelegate進行數據處理和處理是不是很好的做法?
- 14. 你可以使用Lucene作爲OODB嗎?
- 15. 你使用onPostCreate()方法嗎?
- 16. 寫作不僅僅是「你好」
- 17. 設置「HELLO,WORLD。」的文本格式。你好嗎?以「你好,世界,你好嗎?」在ObjC(iOS)?
- 18. 什麼是最好的做法,當你需要做昂貴的檢索
- 19. 這是不好的做法嗎? C++
- 20. 這是不好的做法嗎?
- 21. 使用$ .extend作爲常規幫助函數是不好的做法嗎?
- 22. 如果你構建一個AngularJS自定義指令,在代碼中使用jQuery是不好的做法嗎?
- 23. 你好世界的servlet不工作
- 24. 對tkinter使用import *方法是不好的做法嗎?
- 25. 使用JavaScript的「真實性」是不好的做法嗎?
- 26. 廣泛使用python的getattr是不好的做法嗎?
- 27. 如果你在你的web應用中使用MVC,那麼你不需要使用Smarty(TemplateEngine)是嗎?
- 28. 你使用的是BizTalk嗎?如果是這樣,你怎麼使用它?
- 29. 你無法用Angular.js做什麼,你可以用jQuery做什麼
- 30. 印刷「你好」而不是「你好,世界!」
你將如何直接從其他類訪問AppDelegate?例如,訪問它中的一個屬性 – darksky
要獲得對委託的類型訪問,請調用YourAppDelegate * delegate =(YourAppDelegate *)[UIApplication sharedApplication] .delegate; – ageektrapped
因此,可以在各種viewcontrollers中導入Appdelegate嗎?如果不是的話,請指點我解釋它的地方 – Nil