スウィフトのグローバル変数と共有インスタンスの違いは何ですか?それぞれの使用分野は何ですか?誰でもSwiftに基づいて彼らのコンセプトを明確にすることができますか?グローバル変数と共有インスタンススウィフト
答えて
シングルトン(インスタンスを共有する)
シングルトンオブジェクトのインスタンスが1つだけそれも、アプリ間で共有することができ、オブジェクトの共有インスタンスを通じてグローバルにアクセスを提供します&作成されていることを確認してください。 ブロックを1回実行するdispatch_once関数とonly once for the lifetime of an app
です。
グローバル変数
アップルのドキュメントでは、グローバル変数がoutside of any function, method, closure, or type context
を定義している変数ですと言います。
これらはグローバル変数ではありません。グローバル変数は型コンテキストの外で定義され、型内で "グローバル変数"が宣言されているというドキュメントを引用しました。 –
グローバル変数は、ファイルのトップレベルで宣言された変数です。私たちは、あなたがこのようなグローバル変数でBar
のインスタンスへの参照を格納することができBar
というクラスを、持っていたのであれば:
var bar = Bar()
あなたは、このように、どこからでもインスタンスにアクセスできるようになります
bar
bar.foo()
Aは、インスタンスを共有、またはシングルトン、次のようになります。
class Bar {
static var shared = Bar()
private init() {}
func foo() {}
}
次に、あなたはまだどこかでから、共有インスタンスにアクセスすることができますこのようなモジュールは、:
Bar.shared
Bar.shared.foo()
しかし、(グローバル変数は、単に一般的に推奨されているという事実から離れて)2間の最も重要な違いの一つは、シングルトンパターンはBar
の他のインスタンスを作成するからあなたを制限していることです。 ...しかし、シングルトン(共有インスタンス)を使用して、初期化子はので、これをやろうと、プライベートで
var baaar = Bar()
を
var bar2 = Bar()
var bar3 = Bar()
:最初の例では、あなただけのより多くのグローバル変数を作成することができます...この結果は次のようになります。 "'バー'の初期化子は 'プライベート'の保護レベルのためにアクセスできません。
シングルトンのポイントは、単一の共有インスタンスがあるためです。 Bar
のインスタンスにアクセスできる唯一の方法は、Bar.shared
です。ただし、クラスにprivate init()
を追加することを忘れないようにしてください。他の初期設定は追加しないでください。
この詳細については、KrakenDev hereの素晴らしい記事があります。
- 1. 共有グローバル変数
- 2. Solaris共有ライブラリとグローバル変数
- 3. C++スタティックライブラリの共有グローバル変数:Linux
- 4. グローバル変数、共有ライブラリ、-fPICエフェクト
- 5. Pythonグローバル変数:関数クラスと関数の間の共有
- 6. Pythonのマルチプロセッシングモジュールと共有グローバル変数を変更する
- 7. グローバル変数/オブジェクトをRequireJSと共有する方法
- 8. 複数のサーバー/アプリケーション間でグローバル変数を共有する
- 9. 共有変数とガベージコレクション
- 10. Dllと共有変数
- 11. 共有変数
- 12. 共有変数
- 13. Angular2ページ間の可変変数またはグローバル変数の共有
- 14. グローバル変数?複数のスクリプト間で変数を共有しますか?
- 15. 変数をグローバルに共有するためのアプリケーションの拡張
- 16. 異なる共有ライブラリ間で使用されるグローバル変数
- 17. 2つのプロジェクト間でグローバル変数を共有
- 18. グローバル静的変数または共有設定android
- 19. Pythonでスレッド間でグローバル変数を共有する方法は?
- 20. グローバル変数はスレッド間で共有し、MQTTのpython
- 21. 2つのプロセス間でグローバル変数を共有
- 22. Pythonのクラス間でグローバル変数を共有する
- 23. 共有ライブラリ内のグローバル変数を使用する
- 24. スレッド変数をグローバル化せずに共有する(Perl)
- 25. フォーク後、グローバル変数は共有されていますか?
- 26. T-SQLグローバル/共有データ
- 27. テンソルフローマルチプル共有変数
- 28. 共有ライブラリをロードするときにグローバル変数がリセットされる
- 29. Pythonは関数内の関数のグローバル変数を共有します
- 30. 変更共有変数C++
https://stackoverflow.com/questions/32660471/any-reason-not-use-use-a-singleton-variable-in-swift –