Есть ли в Xcode комбинация клавиш для реализации протокола? - PullRequest
28 голосов
/ 11 октября 2008

В Visual Studio, если я определяю класс для реализации интерфейса, например

class MyObject : ISerializable {}

Я могу щелкнуть правой кнопкой мыши по ISerializable, выбрать « Реализация интерфейса » в контекстном меню и увидеть соответствующие методы, которые отображаются в моем определении класса.

class MyObject : ISerializable {
    #region ISerializable Members
    public void GetObjectData(SerializationInfo info, 
                StreamingContext context)
    {
        throw new NotImplementedException();
    }
    #endregion
}

Есть ли что-нибудь подобное этой функциональности в Xcode на Mac? Я хотел бы иметь возможность автоматически реализовывать протоколы таким образом. Возможно с необязательными методами, сгенерированными, но закомментированными.

Ответы [ 7 ]

22 голосов
/ 19 марта 2011

XCode в настоящее время не поддерживает такого рода автоматизацию. Но: простой способ загрузить код с помощью протокола - щелкнуть опцию по имени протокола в объявлении класса

@interface FooAppDelegate : NSObject <NSApplicationDelegate, 
                                      NSTableViewDelegate> {

, чтобы быстро открыть файл .h, определяющий протокол. Оттуда скопируйте и вставьте интересующие вас методы. Эти заголовки, как правило, хорошо прокомментированы, что помогает определить, какие методы вы можете безопасно игнорировать.

6 голосов
/ 11 октября 2008

Я не видел эту функцию в XCode. Но похоже, что кто-то может написать новый пользовательский скрипт под названием «Поместить определения исполнителя в буфер обмена», который находится внутри Scripts> Code.

Вы не нашли это полезным.

5 голосов
/ 12 октября 2008

В настоящее время в Xcode такого рефакторинга нет.

Если хотите, отправьте запрос на улучшение .

2 голосов
/ 01 июля 2012

Я знаю, что эта тема немного старая, но я удивился тому же и нашел этот вопрос.

В моем случае я определяю свойство в интерфейсе (.h) и хочу синтезировать его в реализации (.m). Мне также нужно реализовать методы, определенные в интерфейсе. Да, Xcode помогает, как уже упоминали другие, но современные IDE предлагают эти улучшения производительности для вещей, которые мы часто делаем. Кажется, что это все еще не особенность в Xcode 4.3.3. Однако эта функция доступна в JetBrains 'AppCode . Я только балуюсь с пробной версией, но возможно, что одновременно возможно только одно свойство или метод, а не весь интерфейс, как Visual Studio.

1 голос
/ 07 июня 2016

проверить этот плагин

https://github.com/music4kid/FastStub-Xcode

делает то, о чем вы просите, и даже больше.

1 голос
/ 17 октября 2010

Xcode может помочь вам для каждого метода протокола, скажем, у вас есть такой протокол:

@protocol PosterousWebsitesDelegate <NSObject>
- (void)PosterousWebsitesLoadSuccess:(PosterousWebsites*)websites;
@end

в разделе @implementation вашего файла .m вы можете начать писать имя метода и нажать клавишу ESC для автозаполнения подписи метода / селектора:

-(void)Poste (...press ESC...)

Xcode автоматически заполняет полную подпись метода @protocol, нажимая TAB для подтверждения кода.

Если вы действительно стремитесь изучать OSX / iOS Development, я бы порекомендовал вам прочитать книгу «XCode 3 Unleashed», которая действительно помогла мне узнать Xcode настолько глубоко, насколько я знаю VS:)

0 голосов
/ 27 января 2010

Macrumors тоже обсуждали это. Есть ссылка на некоторые яблочные скрипты. Я на самом деле не пробовал это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...