在我当前的项目中,在ViewController.m文件中,我正在运行以下方法:
[[connection writer] writeData: data];
它返回警告:
warning: multiple methods named 'writeData:' found
我正在尝试调用该方法:
- (void) writeData: (NSData*)data
...in TCPWriter.m.不幸的是,还有另外两种writeData
方法
- (void)writeData:(NSData *)data;
...in NSFileHandle.h和...
- (BOOL)writeData:(NSData *)data
...in NSURLHandle.h.这对我来说尤其令人困惑,因为[conn writer]
应该返回TCPWriter
类,而该类应该调用正确的writeData
方法。此外,我甚至不能完全确定NSFileHandle.h和NSURLHandle.h是否包含在ViewController.h包含的任何库中,而不是包含在项目的不同部分中。
我如何向编译器显示我想要调用哪个writeData
方法,以及为什么会发生这个错误?
发布于 2009-06-24 05:11:23
确保连接编写器实际上返回一个TCPWriter*。如果它返回一个id,那么编译器将不知道使用哪个writeData。此外,确保您导入的是TCPWriter.h文件-如果编译器看不到头文件,它将默认返回id,这将使您返回相同的问题。
试一试
TCPWriter* writer = [connection writer];
[writer writeData: data];
或
[(TCPWriter*)[connection writer] writeData: data];
发布于 2014-01-06 09:01:32
作为上面精彩答案的替代方案,您可以将对象强制转换为正确的类型,以消除警告,如下所示:
[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling
https://stackoverflow.com/questions/1038171
复制相似问题