通知とそのハンドラーがあります。
- (void) addObservers
{
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleColumnCreated:) name:NNColumnCreated object:nil];
…
}
- (void) handleColumnCreated:(NSNotification*)notification
{
[_formFields makeInfoForColumn:[notification object] FieldInfo:_propertiesViewController.representedObject];
[self setActiveColumn:[notification object]];
}
- (void) setActiveColumn:(id)theColumn
{
if (_activeColumn != nil)
{
[_activeColumn setBackgroundColor:_oldColumnColor];
}
_activeColumn = theColumn;
_oldColumnColor = [_activeColumn backgroundColor];
[_activeColumn setBackgroundColor:[NSColor greenColor]];
[_window makeFirstResponder:theColumn];
[_propertiesViewController setRepresentedColumn:[theColumn info]];
}
setActiveColumnの最後の行に、setRepresentedColumn:に送信しているパラメーターのタイプが間違っているという警告が表示されます。しかし、デバッガーで行をトレースすると、[theColumn info]は正しいタイプに解決され、行は正しく実行されます。
警告は無視できますが、それは良い考えではないと思います。[theColumn info]
コンパイラがそれが間違ったタイプのオブジェクトを生成すると考える理由を理解できませんでした。ヘルプ!