2009-02-06 40 views
2

在蘋果公司的單例文檔中,我明白有不止一種方法來剝皮貓 - 但爲什麼他們打擾確保實例註冊爲靜態?作爲靜態的Objective-C Singleton實例?

採取從:http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html

我指的是:

靜態MyGizmoClass * sharedGizmoManager =零;

+0

上面的鏈接應該更新爲:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html – 2010-01-03 04:45:53

回答

9

我相信它是這樣的,變量不能從它定義的文件之外訪問。否則它將是全球可訪問的。

這強制客戶端必須使用 - (id)sharedObject訪問單例。

+0

我在多個文件中以類似的方式使用單例/ modules ..它不會給我任何訪問它的問題。 – Coocoo4Cocoa 2009-02-06 17:00:35

2

上面的答案是正確的。將單例變量聲明爲靜態意味着它只存在於包含它的文件的本地範圍內,這正是你想要的。部分原因是這個單例模型依賴延遲加載在第一次使用時創建單例,部分原因是因爲您不希望外部訪問可能在內存中丟失單例的指針,或者允許另一個實例被創造出來,從而使整件事毫無意義。