Что является тривиальной задачей в Objective-C
- (instancetype)initWithTitle:(NSString *)title {
return [super initWithTitle:title];
//bool but_it_works_in_objective_c;
}
вызывает ошибки короткого замыкания с предложениями: при возврате разрешено только значение nil >> Неудачный инициализатор 'init (title :)' не может переопределить исправный инициализатор >> при возврате разрешено только значение nil ...
Скриншоты с ошибками компилятора из Xcode 9.3 (Swift 4.1)
Давно пришел переход от я бы к возвращаемому instancetype, кажется, имеет идею просто отличить отсутствие присутствия возврата в семействе инициализаторов init
.
Почему же тогда такой очевидный намек не смог пройти автокоррекцию?
В Swift (исправный) метод init
ничего не возвращает, и вы не должны изменять подпись назначенного инициализатора.
class MyMenu : NSMenu {
override init(title: String) {
super.init(title: title)
}
required init(coder decoder: NSCoder) {
super.init(coder: decoder)
}
}
да, это правильно и единственно верный путь. переход к возвращенному instancetype, кажется, имеет идею просто различать наличие возврата в семействе unit
тела инициализатора. Почему такой очевидный намек не смог пройти автокоррекцию?
хотя в NSMenu не так много вопросов, связанных с вопросом, который в целом рассматривается только в качестве примера для наиболее распространенного типа, который оказывается полезным, но не является NSView