Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 击败",;名为'的多个方法;xxx:';“发现”;错误_Objective C_Xcode_Warnings - Fatal编程技术网

Objective c 击败",;名为'的多个方法;xxx:';“发现”;错误

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

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

确保[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