如何使單身可達性工作? 這是我想要做的...可達性和單身
我有一個應用程序。 當它啓動時,我想有一個單身人士,並與可達性工作,以保持網絡狀態。 然後我想從其他控制器訪問單例並檢查網絡狀態。 例如,我希望每次用戶單擊一個選項卡並顯示屏幕以檢查互聯網狀態並啓用或禁用按鈕。
我知道這個問題很普通,但我很困惑。 我使用的是可達性2.2
任何提示或想法,甚至指導將不勝感激。
還有最後一個問題...... 「道德」如何是單身使用?是最接近MVC模型的最佳實踐嗎?
再次感謝
如何使單身可達性工作? 這是我想要做的...可達性和單身
我有一個應用程序。 當它啓動時,我想有一個單身人士,並與可達性工作,以保持網絡狀態。 然後我想從其他控制器訪問單例並檢查網絡狀態。 例如,我希望每次用戶單擊一個選項卡並顯示屏幕以檢查互聯網狀態並啓用或禁用按鈕。
我知道這個問題很普通,但我很困惑。 我使用的是可達性2.2
任何提示或想法,甚至指導將不勝感激。
還有最後一個問題...... 「道德」如何是單身使用?是最接近MVC模型的最佳實踐嗎?
再次感謝
單身很好。可達性可以是一個非常明智的單身人士。您應該知道Apple's Cocoa Fundamentals Guide中的文檔「Creating one singleton Instance」,但仔細閱讀文本。他們提供的代碼很少是你需要的,並且可以解決更多的問題。只有在存在對象的多個副本(由於對象管理唯一資源等原因而錯誤)的情況下才適用。在這些情況下,我傾向於傾向於在-init
中聲明,而不是重載allocWithZone:
,因爲我寧願強制開發人員進行正確調用(+sharedInstance
),而不是爲他們安靜地修復它,並讓他們認爲他們在創建兩個實例時創建了兩個實例實際上有一個(至少在單身人士是可變的或持有狀態的情況下)。
在this question中有很好的單身模式的討論。我喜歡@Robbie Hanson在我自己的代碼中的回答,因爲它是廉價的線程安全的。
你對這篇關於單身人士的文章有什麼看法(http://www.duckrowing.com/2010/05/21/using-the-singleton-pattern-in-objective-c/)? @ Rob-Napier – auslander 2011-03-12 07:17:01
我不喜歡+ sharedInstance中的@synchronize,因爲它很貴。我更喜歡使用+初始化,因爲那樣你就可以免費獲得線程安全。正如我上面所描述的,我通常不喜歡重載+ allocWithZone,-release等等。我相信它經常會掩蓋編程錯誤,如果有人試圖在非法(很少)的情況下創建多個副本,那麼最好斷言,而其餘時間應該允許多個「singleton」副本(請參閱NSNotificationCenter以獲得一個很好的示例;這是正常情況)。在這裏尋找「單身人士」:http://robnapier.net/blog/learning-cocoa-2-467 – 2011-03-12 18:51:33