Генерация пользовательского метода инициализации автоматически
Можно ли автоматически генерировать пользовательский метод init из Xcode, как это делает Android Studio для Android? Я имею в виду, если я объявлю некоторые свойства в.h, например: int a; int b;
Итак, я хотел бы автоматически создать метод init как:
- (id)initWithA:(int) aInner andB:(int) bInner
{
a = aInner;
b = bInner;
}
4 ответа
Новый Xcode (после Xcode 10) поддерживает эту проблему для класса (не для структуры).
Шаги:
- щелкните правой кнопкой мыши имя класса
- нажмите "рефакторинг"
- нажмите "Создать поэлементный инициализатор"
Что касается struct. Вы можете сделать его первым классом и изменить его обратно на структуру после того, как вы получите auto-gen init.
Хотя до сих пор нет способа сделать это автоматически (без установки плагина), есть удобный прием для преобразования списка объявлений свойств в назначения с использованием нескольких курсоров:
- Скопируйте список свойств и вставьте его в свой конструктор
- Используйте Shift + Ctrl + щелчок, чтобы вставить несколько курсоров (Shift + Ctrl + ↑ / ↓ также работают)
- Редактирование с несколькими курсорами для назначения значений
Кредиты идут на Пола Хадсона: Xcode за 20 секунд: несколько курсоров
Нет никакого собственного способа сделать это, однако вы можете установить расширения XCode, которые добавят поддержку для этого.
Посмотрите это следующее расширение, поскольку оно предоставит вам нужную функцию (версия Swift).
Йо может создать фрагмент. Вам нужно немного поиграть с ним, создать красивые синие заполнители там, где это уместно, но самое главное, прикрепить к нему комбинацию клавиш. Например, "initx"
Затем вы просто начинаете вводить ярлык в строке, где вы хотите, чтобы инициализатор был, и вуаля, у вас есть свой собственный init.
Да, вы можете инициализировать класс с помощью пользовательского метода init или передать параметр, если вы хотите инициализировать класс с помощью пользовательского метода init
смотреть
Определите в своем файле class.h
@interface CustomView : UIView
- (id)initWithA:(int) aInner andB:(int) bInner
В.m файле реализуем initWithStringMethod.
- (id)initWithA:(int) aInner andB:(int) bInner
{
if((self = [super init]))
return self;
}
инициализированный класс из другого класса или viewController
CustomView *cv = [[CustomView alloc] initWithA:5 andB:10 ];
Тип init
в файле реализации и нажмите enter
:)
или вы можете создать свой собственный фрагмент кода, создав один экземпляр своего собственного кода инициализации, выбрав код и перетащив его в библиотеку фрагментов кода. Красиво объяснил здесь.