私のインターフェイスには、value
のユーザーがNSTextField
でNSArrayController's
selection.selectedType.title
にバインドされています。 NSArrayController's
オブジェクトのすべてのカスタムは、二つの方法で各オブジェクトされていますKVO:オブザーバを削除できません
- (MYType *)selectedType;
- (void)setSelectedType: (MYType *)type;
ははIVAR selectedType
を持っていません。しかし、それらは全てMYType
のオブジェクトを保持するiVarを持っています。コードはこれに沸く:
- (MYType *)selectedType
{
if (someIndex == 0)
return [types objectAtIndex: 0];
else
return [self typeWithIndex: someIndex];
}
- (void)setSelectedType: (MYType *)type
{
someIndex = [type index];
}
MYType
オブジェクトは、対応する@property
とsynthesize
でNSString *title
IVARを得ました。
私はsetSelectedType:
を呼び出すたびに、変更がNSTextField
にすぐに表示され、すべてが動作しているようですが、私は言って、ログメッセージを取得:
キー パス「selectedTypeのためのオブザーバーNSArrayControllerはの0x141160を削除することはできませんが。キータイプ「selectedType」の値が に変更されたため、適切なKVO通知を送信せずに、おそらく がMYType 0x1a4830から「タイトル」に変更されました。 MYTypeクラスの KVO準拠を確認してください。
は私がwillChangeValueForKey:
とdidChangeValueForKey:
とsetSelectedType:
方法をカプセル化しようとしたし、私はまだ、ログメッセージが異なる1つを得た:
キー パス「タイトル」からのためにオブザーバーNSKeyValueObservance 0x1c7570を削除することはできませんMYType 0x1a4be0は オブザーバとして登録されていないためです。