Подтвердить что ты не робот

Поражение "нескольких методов с именем" 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, который я хочу вызвать, и почему эта ошибка происходит?

4b9b3361

Ответ 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