私はこれらの異なるキーワードをいつ使用するかを知っていますが、正確に私がそれらを使いたいときに誰かに明示することができます。いつswift 2.2でstatic、final、privateを使用したいですか?
答えて
静的
あなたには、いくつかのデータを必要とするときは、新しいオブジェクトを割り当てることなく、静的メソッドやプロパティを使用して、静的の最も一般的な用途は、シングルトンデザインパターンや時にあなたには、いくつかのヘルパークラスを持っている可能性があります。 だから例えば、あなたが呼び出すことができる機能で:staticMethod
から
let temp = Helper.staticMethod();
class Helper {
private let test1234 = false
private func privateMethod() {
}
private static func privateStaticMethod() -> Int {
return 0
}
static func staticMethod() -> Int {
self.privateMethod() // Error
self.test1234 // Error
self.test1234 // Error
Helper.privateStaticMethod() // OK
return 0
}
}
あなたはクラスの静的でないメソッドやプロパティHelper
にアクセスすることができません最終
すべてのクラスをfinal宣言し、それらをサブクラス化する必要がある場合にだけ削除することをお勧めします。最終的なクラスをサブクラス化しようとすると、最終的にコンパイル時エラーが発生するので、きれいなコードを作成するリスクを伴わずにクリーンなアーキテクチャーを手に入れることができ、コードの可読性も向上します。
final class FinalClass {
}
class Sub1: FinalClass {
} //Error
class Base {
}
class SubBase: Base {
} //OK
プライベート
プライベートクラス/プロパティが範囲外見えません。 アーキテクチャにうまくカプセル化するのに役立ちます。
class A {
private let test = 1
let test2 = 1
}
let classA = A()
classA.test //Error
classA.test2 //OK
は、私はより良い説明のためにスウィフトのドキュメントを読んでお勧め: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
- 1. getterで 'public static final'または 'private static final'ですか?
- 2. "private final static"変数を持つJavaクラス。それは良い考えですか?
- 3. Java Reflection、private static finalフィールドは何もしませんでした
- 4. "private static final"のトークンに構文エラーがあります
- 5. static final char []スレッドは安全ですか?
- 6. Scalaコンストラクタで "static final constant"を使用するには?
- 7. PHP | public/private関数の代わりにpublic static/private static関数を使うべきですか?
- 8. final public static intsはswitch文で使用できません。
- 9. Javaでpackage-privateはいつ使用しますか?
- 10. C++ Java static final equivalent
- 11. enumのstatic finalメソッド
- 12. 'static final byte'のスイッチケース
- 13. final static vs final non-staticフィールドとJVMの最適化
- 14. "private static class clazz = SnappyDecompressor.class"ソースファイルで使用されるclazzとは何ですか?
- 15. iOS 9.2とwatchOS 2.1でSwift 2.2を使用しますか?
- 16. プライベートstatic final int CAMERA_REQUEST = 1313(または1888)は何ですか?
- 17. Swift 2.2でアニメーションが動作しない
- 18. クラスES6のstatic finalプロパティ
- 19. パブリックstatic finalを使用せずにAndroidで定数を宣言する方法
- 20. public final static stringのテストクラス
- 21. のJava SEのstatic final
- 22. -static-link-runtime-shared-librariesを使用しないのはいつですか?
- 23. なぜstatic final intがenumを避けるアンドロイド標準クラスで使用されていますか?
- 24. グラフを使用する。 Swift 2.2
- 25. なぜJavaがコンストラクタ内のstatic final変数(static final int dなど)の初期化を許可しないのですか?
- 26. SuperClassのfinal static宣言とextendedClass宣言の違いは何ですか?
- 27. アンドロイドのpublic static final String SET_ACTIVITY_WATCHERパーミッションの使用方法は?
- 28. 下付き文字swiftのあいまいな使用2.2
- 29. Swift 4のprivateとfileprivateの違いは何ですか?
- 30. static final finalフィールドの内部メソッドにアクセスするテストメソッドは、エラーを返します
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl。 html – JAL