在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
方法以及为什么会发生此错误?
答案 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