У меня есть протокол
// Protocol.h
- (instancetype)initWithConfig:(NSDictionary *)dictionary;
Класс, который init
является назначенным инициализатором, подтверждает протокол
// ClassA.m
- (instancetype)init {
return [self initWithConfig:nil]; //////////// !!!warning here**
}
- (instancetype)initWithConfig:(NSDictionary *)dictionary {
self = [super init];
if (self) {
_ivar = @"default value";
[self setupSomething];
}
return self;
}
Я получил предупреждение: Назначенный инициализатор должен только вызывать указанный инициализатор для 'super'
- Я знаю, что добавление
initWithConfig: NS_DESIGNATED_INITIALIZER
к интерфейсу или расширению может решить эту проблему, но это не то, что я хочу. - Писать одни и те же логи c дважды - это не мой стиль.
- Добавление
NS_DESIGNATED_INITIALIZER
к методу протокола приводит к ошибке.
Извлечение метода кажется единственным разумный способ? Интересно, есть ли другой способ отклонить предупреждение?