击败“多个名为'xxx:'found”的方法错误

时间:2009-06-24 12:51:11

标签: objective-c xcode warnings

在ViewController.m文件中的当前项目中,我正在运行方法:

[[connection writer] writeData: data];

它返回警告:

warning: multiple methods named 'writeData:' found

我试图调用方法:

- (void) writeData: (NSData*)data

...在TCPWriter.m中。不幸的是,还有另外两种writeData方法

- (void)writeData:(NSData *)data;

...在NSFileHandle.h和......

- (BOOL)writeData:(NSData *)data

...在NSURLHandle.h中。这对我来说尤其令人困惑,因为[conn writer]应返回TCPWriter类,该类应调用正确的writeData方法。此外,我甚至不完全确定NSFileHandle.h和NSURLHandle.h甚至包含在ViewController.h中包含的任何库中,而不是包含在项目的不同部分中。

如何向编译器显示我想调用哪个writeData方法以及为什么会发生此错误?

2 个答案:

答案 0 :(得分:53)

确保[连接编写器]实际返回TCPWriter *。如果它返回一个id,那么编译器将不知道要使用哪个writeData。此外,请确保您正在导入TCPWriter.h文件 - 如果编译器没有看到头文件,它将默认返回id,这将使您回到同样的问题。

尝试

TCPWriter* writer = [connection writer];
[writer writeData: data];

[(TCPWriter*)[connection writer] writeData: data];

答案 1 :(得分:4)

作为上述精彩答案的替代方案,您可以将对象转换为正确的类型以消除警告,如下所示:

[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling