簡體   English   中英

iOS Objective-C中Singleton類和AppDelegate類之間的關系

[英]Relation between Singleton class & AppDelegate class in iOS Objective-C

我有一個在AppDelegate類(.h文件)中聲明的變量,其值從多個ViewController類中更改。另外,我的AppDelegate類的單個應用程序范圍的實例在我的應用程序中共享,如下所示:

AppDelegate * AppD =(AppDelegate *)[[UIApplication sharedApplication] delegate];

因為我可以從任何ViewController類訪問AppDelegate中聲明的這個變量,AppDelegate類在這種情況下是Singleton類的一個例子嗎?

任何人都可以通過現實生活中的例子來幫助解決單例類的使用問題嗎?

然而,AppDelegate是一個單例類,但您只顯示它用於聲明應用程序中全局適用的內容。
例如:如果要更改整個應用程序中導航欄的顏色,可以使用app delegate並設置導航欄的顏色。 app delegate也是一個處理應用程序中不同狀態轉換的對象。
因此,如果您想創建一個可以從多個View控制器更改的變量,您應該創建一個單例類並在該類中聲明該變量。

應用程序委托不應該是各種全局變量的存儲庫。 應用程序委托應該用於影響整個應用程序的事情,例如啟動/應用程序終止,進入后台並從后台返回等等。

如果有多個視圖控制器共享的狀態,它應該只存在一次,但不會影響整個應用程序,那么您可以考慮為該狀態創建一個單例。 然后,應該避免全局狀態,這只是你編寫代碼的一個人工制品。

AppDelegate可以像單身一樣使用,但我不推薦它。 就像你可以將所有類聲明和定義放在class.h和class.m文件中一樣。 只需導入class.h文件即可調用所有類。 但閱讀,理解和管理會非常不方便。

AppDelegate主要用於各種app本身事件,通過UIApplicationDelegate方法。 不建議在這里處理關於全局數據的過多邏輯。 例如,名為XXManager,XXService,PublicData的類被提議用於管理各種單例數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM