Устранение ошибки «несколько методов с именем« xxx: »found» - PullRequest
28 голосов
/ 24 июня 2009

В моем текущем проекте внутри файла 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 я хочу вызвать и почему возникает эта ошибка?

Ответы [ 2 ]

53 голосов
/ 24 июня 2009

Убедитесь, что [обработчик подключений] действительно возвращает TCPWriter *. Если он возвращает идентификатор, компилятор не будет знать, какие записи использовать. Также убедитесь, что вы импортируете файл TCPWriter.h - если компилятор не видит заголовочные файлы, он по умолчанию вернет id, что вернет вас к той же проблеме.

Попробуйте

TCPWriter* writer = [connection writer];
[writer writeData: data];

или

[(TCPWriter*)[connection writer] writeData: data];
4 голосов
/ 06 января 2014

В качестве альтернативы великолепному ответу выше, вы можете привести объект к нужному типу, чтобы избавиться и от предупреждения, например, так:

[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...