Objective c 击败",;名为'的多个方法;xxx:';“发现”;错误
在文件ViewController.m中的当前项目中,我正在运行以下方法:Objective c 击败",;名为'的多个方法;xxx:';“发现”;错误,objective-c,xcode,warnings,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 *)d
[[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
方法以及为什么会发生此错误?确保[connection writer]实际返回的是TCPWriter*。如果它返回一个id,那么编译器将不知道使用哪个writeData。另外,请确保您正在导入TCPWriter.h文件-如果编译器没有看到头文件,它将默认返回id,这将使您回到相同的问题
试一试
或
作为上述出色答案的替代方法,您可以将对象强制转换为正确的类型,以消除警告,如下所示:
[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling
我没有意识到,当文件没有显式导入时,它默认返回一个id。谢谢打开警告,你就不必感到奇怪了。其他链接器标志:-墙,并启用尽可能多的其他标志,包括将警告视为错误。
[(TCPWriter*)[connection writer] writeData: data];
[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling