私はのコアデータエンティティindexCurrent
を持っています。外部のクラスがindexCurrent
にアクセスするとき、私は彼らに返す前にindexCurrent
の値を更新する必要があるかどうかをチェックするために使用できるargを送信します。したがって私はindexCurrent
をプライベート変数として宣言し、argを使ってその特別なメソッドを通してのみ外部へのアクセスを許可しています。コアデータの一時的な属性を非公開にすることができません
しかし、コンパイラは "メソッドが見つかりません"という警告を発行しますが、外部クラスはindexCurrent
とsetindexCurrent:
の両方を呼び出すことができます。このエラーコードは完全に成功して実行されます。ここで
Series
インタフェースです:
@interface Series : NSManagedObject {
@private
NSNumber *indexCurrent;
}
indexCurrent
がpropertizedされていない、実装ファイル内の動的として宣言されていない、と私はindexCurrent
またはsetindexCurrent:
アクセサを書いていません。
私は間違っていますか? indexCurrent
を非公開にするにはどうすればよいですか?
私は、個人的な管理対象オブジェクトの属性と同じものではないと考えています。ドット構文がないことに頼らざるを得ません(これは@property行なしでは機能しません)私のデザインを強制する。あなたの解説に感謝します。これは、Core Dataに関する素晴らしい解剖学のレッスンです。 – Wienke
publicとprivateの概念全体はObjective-Cのデザインパターンではありません。それは存在しますが、私はそれに依存しません。人間が読んで、「ああ、私はそれに触れてはいけない」と言っても、マーカーはそこにある。コンパイラは、その警告を無視すると、あなたの方法で取得するつもりはありません。 –