Мой суперкласс определяет частный метод, называемый «commonInit», который вызывается только при построении.UIVIew объект суперкласса, вызывающий метод подкласса вместо метода в своей области
супер класс является производным от 2-х дополнительных классов, каждый из которых также реализуют метод, называемый «commonInit»
При строительстве объектов производного класса, я вижу в отладчике, что метод подкласса вызывается из объем суперкласса.
Это, кажется, очень опасное поведение - даже в тривиальном случае, когда на coincedence вы «перезаписать» вашего суперкласс частного метода
Как я могу преодолеть это поведение без переименования метода в родительском классе?
Пример:
@interface ASuperView : UIView
@end
@implementation ASuperView
-(id)init
{
self = [super init];
if(self)
{
[self commonInit]; // BOOM - The derived view method is called in this scope
}
return self;
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self)
{
[self commonInit];
}
return self;
}
-(void)commonInit
{
//setup the view
}
@end
@interface ADerivedView : ASuperView
@end
@implementation ADerivedView
-(id)init
{
self = [super init];
if(self)
{
[self commonInit];
}
return self;
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self)
{
[self commonInit];
}
return self;
}
-(void)commonInit
{
//setup the view for the derived view
}
@end
В этом изображении PXTextMessageBox, полученном из PXTextBox
Оба объявить частные методы общей инициализации
Сравнить http://stackoverflow.com/questions/2863982/how-to-avoid-overriding-of-methods-in-subclass-in-objective-c или http://stackoverflow.com/questions/2864273/ как к избегаю-суперкласс-методы добывания-переопределен-на-суб-класс-в-Objective-C. –