カテゴリにプロパティを作成して、アクセサでドット表記を使用できます。これを行う理由は、NSMangedObjectのプロパティを参照する既存のコードをリファクタリングすることができるためです。次に、外部の呼び出し元とそれに関連するNSManagedObjectプロパティの間にカテゴリアクセサメソッドを配置します。 (私は大規模なプロジェクトを通してドット表記法を使用しているので、現在のドット表記法の使用法をメッセージングと置き換えたくないです。)Objective Cでドット表記を使用するための要件は何ですか?
私は、次のようなプロパティ宣言を使ってカテゴリインターフェース内を少し試しました:@property NSString* details;
これは(これはデフォルトの割り当て属性を好きではなかった。)警告コンパイラになり
直接施設に縛ら何IVARがないため、保持またはコピーの属性を追加することには意味がありません。
次に、@property行を除外し、インターフェイスと実装ファイルにアクセサを追加しました。
- (void) setDetails:(NSString*)details;
- (NSString*) details;
コードをコンパイルして実行しました。私はドット記法を使ってメソッドをテストしました。アクセサーがエラーなく正しくコンパイラーがコンパイルされずに使用できることがわかりました。
私がドット表記について読んだことは、プロパティをある方法で設定すると、ドット表記法を使用できることです。しかし、私はその要件に合致するプロパティを設定していません。しかし、私はまだドット表記を使うことができるようです。
この方法に問題はありますか?ドット表記アクセサーをいつ、どのように使用できるかを定義する仕様はありますか?
私は私の質問で言及したように、これが動作することがわかります。しかしこれは仕様によってサポートされていますか?もしそうなら、どこで仕様を見つけることができますか?サポートされていない場合、将来のコンパイラバージョンでコードが破損する危険性があります。 – Jim
すみません、申し訳ありませんが、私は現在ドキュメントを探していますが、前に見たことを思い出すことはできません。 –
はい、私はそれをカバーすると思います。プロパティを前提条件として定義することについては言及していません。そのドット表記だけがコンパイラによってアクセッサメソッドの呼び出しに変換されます。 " (例:[myInstance setValue:10]、[myInstance value])。権威のある情報源を指してくれてありがとう。 – Jim