Поражение "нескольких методов с именем" xxx: "found" error
В моем текущем проекте внутри файла 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
, который я хочу вызвать, и почему эта ошибка происходит?
Ответы
Ответ 1
Убедитесь, что [писатель связи] фактически возвращает TCPWriter *. Если он возвращает идентификатор, компилятор не будет знать, какую запись использовать. Кроме того, убедитесь, что вы импортируете файл TCPWriter.h - если компилятор не видит файлы заголовков, по умолчанию будет возвращен идентификатор, который вернет вас к той же проблеме.
Try
TCPWriter* writer = [connection writer];
[writer writeData: data];
или
[(TCPWriter*)[connection writer] writeData: data];
Ответ 2
В качестве альтернативы великолепному ответу выше вы можете применить объект к правильному типу, чтобы избавиться от предупреждения, например:
[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling