ViewController.mファイル内の現在のプロジェクトでは、次のメソッドを実行しています。
[[connection writer] writeData: data];
警告を返します:
warning: multiple methods named 'writeData:' found
私はメソッドを呼び出そうとしています:
- (void) writeData: (NSData*)data
... TCPWriter.mで。残念ながら、他に2つのwriteData
メソッドがあります
- (void)writeData:(NSData *)data;
... NSFileHandle.hおよび...
- (BOOL)writeData:(NSData *)data
... NSURLHandle.hで。 [conn writer]
はTCPWriter
クラスを返し、そのクラスは正しいwriteData
メソッドを呼び出す必要があるため、これは特に混乱を招きます。さらに、NSFileHandle.hとNSURLHandle.hが、プロジェクトの別の部分ではなく、ViewController.hに含まれているライブラリのいずれかに含まれていることさえ完全にはわかりません。
どのwriteData
メソッドを呼び出したいかをコンパイラに示すにはどうすればよいですか?また、なぜこのエラーが発生するのですか?
[接続ライター]が実際にTCPWriter *を返していることを確認してください。 IDを返している場合、コンパイラーは使用するwriteDataを認識しません。また、TCPWriter.hファイルをインポートしていることを確認してください。コンパイラがヘッダーファイルを認識しない場合、デフォルトでidが返され、同じ問題に戻ります。
試してみてください
TCPWriter* writer = [connection writer];
[writer writeData: data];
または
[(TCPWriter*)[connection writer] writeData: data];
上記のすばらしい答えの代わりに、次のように、オブジェクトを適切なタイプにキャストして、警告を取り除くこともできます。
[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling