Определение метода не найдено ... автоматическая заглушка с Xcode? - PullRequest
7 голосов
/ 03 марта 2010

Я не хочу сдаваться, прежде чем спрашивать, потому что это базовая функциональность в любой Java / .Net IDE.Компилятор говорит мне:

Incomplete implementation of class...
Method definition for '-someMethod:' not found

, но щелчок, щелчок правой кнопкой мыши, молитва и поиск в Google не заставили меня автоматически создать заглушку метода из этого. Может ли Xcode создать для меня заглушку метода и доставить меня туда?

Если нет, то почему (кроме слов "настоящим программистам нравится печатать")?1010 * Редактировать: Я думал, что option-escape в основном решил это для меня, но это не так.Кажется, он не знает обо всех (любых?) Интерфейсах, которые реализует мой класс.

Ответы [ 4 ]

4 голосов
/ 03 марта 2010

Это может быть вариант, чтобы подать запрос на функцию в Apple. Как правило, я создаю свой файл @interface, а затем выполняю копирование / вставку @interface в @implementation, сохраняя при этом абсолютный минимум ввода.

Однако было бы неплохо иметь возможность щелкнуть предупреждение и сделать так, чтобы Xcode просто создал метод в нижней части @ реализации.

ПРИМЕЧАНИЕ: после @ реализации

допустимо оставлять точку с запятой
@interface PCStackValue : NSObject <NSCoding, NSCopying>
{
}

- (id) initWithDisplayRadix:(int) newRadix;

@end

@implementation PCStackValue

- (id) initWithDisplayRadix:(int) newRadix;
{
   … do something;
}
@end    
2 голосов
/ 21 декабря 2011

Я не против этого поведения. С одной стороны, реализация не обязательно существует, поскольку она может быть динамической. Я также классифицирую свой код, используя # pragma mark - MyCategory и хочу реализации в определенных местах исходного файла.

Однако я согласен - я не хочу печатать саму заглушку.

Вы можете сделать это за метод.
Перейдите к файлу реализации и начните вводить - префикс и нажмите ESC, и вы должны увидеть действительные дополнения, соответствующие префиксу. Вы должны начать с ввода - или +, чтобы это работало, например, методы и методы класса соответственно.

Иногда вы не знаете, что вы должны реализовать! Откройте Навигатор проблем и щелкните прямоугольник раскрытия. Там должна быть строка, которая говорит Метод, объявленный здесь . Нажмите на него, чтобы увидеть метод, который не имеет реализации.

1 голос
/ 20 декабря 2011

То, что вы ищете, не существует. Я просто использую автозаполнение (обычно оно работает для меня) или копирование / вставка.

Что заставляет вас думать, что в XCode есть функция только потому, что она есть в Eclipse? Eclipse ~ 10 лет, а Xcode ~ 23 года. Любые скопированные объекты, скорее всего, будут в другом направлении.

Тем не менее, это было бы отличным запросом. Возможно, открыв меню автозаполнения в пустой строке внутри @implementation .. @end, можно получить список еще не реализованных методов.

Но я не уверен, насколько хорошо это будет работать на практике из-за категорий NSObject. В меню автозаполнения могут быть буквально тысячи «еще не реализованных» методов. Но это может, по крайней мере, показать некоторые из наиболее вероятных.

Похоже, что эта ошибка / предупреждение компиляции также была бы хорошим кандидатом на новую функцию "Fix It".

Также: научитесь печатать быстрее: p

0 голосов
/ 19 марта 2012

О чем говорит OP (me), это Java, где интерфейс неявный. Однако тот же случай в XCode является случаем, где нет никакого метода, все же определенного в любом интерфейсе.

AppCode обрабатывает этот случай, Xcode - нет (если кто-то не ответит на этот вопрос, но он здесь уже некоторое время):

AppCode popover showing method creation

Позже: Люди ответили на вопрос, но Xcode все еще не делает этого.

...