Swiftでは、プロパティが外部的に読み取り専用であるが、それを所有するクラス(およびサブクラス)によって内部的に変更可能な共通パターンを定義する従来の方法は何ですか。
Objective-Cには、次のオプションがあります。
- インターフェイスでプロパティを読み取り専用として宣言し、クラス拡張を使用してプロパティに内部的にアクセスします。これはメッセージベースのアクセスであるため、KVO、原子性などとうまく連携します。
- インターフェイスでプロパティを読み取り専用として宣言しますが、内部でバッキングivarにアクセスします。ivarのデフォルトアクセスは保護されているため、これはクラス階層で適切に機能します。サブクラスも値を変更できますが、それ以外の場合、フィールドは読み取り専用です。
Javaでは、規約は次のとおりです。
- プロテクトフィールドを宣言し、パブリックな読み取り専用のゲッター(メソッド)を実装します。
Swiftのイディオムは何ですか?
var
キーワードを追加して自由にコンパイルできます。)