Я читал книгу " Шаблон проектирования какао ", и 2 ее пункта, в главе 3 (Создание двухэтапной схемы), приводят меня в замешательство.
Убедитесь, что назначенный инициализатор суперкласса переопределен для вызова нового назначенного инициализатора.
При создании подклассов убедитесь, что каждый новый инициализатор, который не является назначенным инициализатором, вызывает назначенный инициализатор.
Мой вопрос: как мы можем вызвать метод, для которого у нас нет параметров для передачи? Пример книги публикуется ниже. В этом методе писатель передал некоторые «статические» значения, но мы должны это делать? Или это всегда желательно?
Мой второй вопрос: почему я должен переопределить назначенный метод суперкласса, когда я никогда не буду вызывать его, когда буду инициализировать свой объект, кроме как в моем собственном назначенном инициализаторе, где я не буду передавать какие-либо параметры ( например, в случае NSObject)
@interface MYCircle : NSObject {
NSPoint center;
float radius;
}
// Designated Initializer
- (id)initWithCenter:(NSPoint)aPoint radius:(float)aRadius;
@end
@implementation MYCircle
// Designated Initializer
- (id)initWithCenter:(NSPoint)aPoint radius:(float)aRadius {
self = [super init];
if(nil != self) {
center = aPoint;
radius = aRadius;
}
return self;
}
@end
// Overriden inherited Designated Initializer
- (id)init {
static const float MYDefaultRadius = 1.0f;
// call Designated Initializer with default arguments
return [self initWithCenter:NSZeroPoint radius:MYDefaultRadius];
}
Пожалуйста, также помогите мне исправить мой вопрос, потому что я не уверен, что то, что я действительно спрашиваю, является правильным вопросом.
Спасибо.