我有一个通知及其处理程序:
- (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]
产生错误类型的对象。帮助!