Моего класса А инициализируется так:Вызова кода настройки суперкласс
- (instancetype)init // designated initializer
{
self = [super init];
if (self) {
[self setup]; // just sets some properties
}
return self;
}
У меня есть следующий класс B, который подклассы:
- (instancetype)init
{
self = [super init]; // calls the initializer of A and SHOULD call the setup code of A but it does not
if (self) {
[self setup]; // just sets some properties for B
}
return self;
}
Моя проблема:
B должен вызывать метод установки A, но это происходит не из-за динамического ввода Objective-C. Вместо этого B называет свой код настройки дважды.
Как решить эту проблему (помимо переименования методов) или даже лучше? ЛЮБЫЕ ЛУЧШИЕ ПОДХОДЫ?
Я мог бы переместить код, написанный в setup
для init
, но проблема в том, что у меня есть более чем один назначенный инициализатору (например: UIViewControllers имеет initWithFrame:
и initWithCoder:
) и я ленив о написании кода дважды.
Спасибо! Моя проблема с переименованием заключается в том, что это как-то показывает, что этот подход не самый красивый способ настройки некоторых свойств. Вот почему я скорее ищу другие идеи, как это сделать. – Duc