2009-09-03 1 views
0

это мой наследуется класс UIView: MobileViewObjective-C проблема наследования с UIView

@interface MobileView : UIView { 
    IconView *icon1; 
    IconView *userCar; 
    id goTimer; 
} 

@property (nonatomic, retain) IconView *icon1; 
@property (nonatomic, retain) IconView *userCar; 

-(void) goRightInSeconds: (NSInteger)secs; 
-(IconView *) cannon; 

@end 

У меня есть еще один класс, который inheritated UIView: IconView

@interface IconView : UIView { 
    UIImage *iconImage; 
    CGFloat originalX, originalY; 
} 

@property (nonatomic, retain) UIImage *iconImage; 

-(id)initWithImage: (UIImage *)image andFrame:(CGRect) rect; 

-(CGFloat) getX; 

-(CGFloat) getY; 

@end 

Теперь, другой класс «основного вида», который также является подклассом UIVIew, я называю это:

mobile = [[MobileView alloc] initWithFrame:CGRectMake(0, 100, 150, 150)]; 
***[mobile cannon]*** 

Теперь у меня есть ошибка: [UIView пушечной]: непризнанный селектор направил к экземпляру 0xd1ae00' (я до сих пор та же ошибка, если я использую [мобильный icon1])

Почему это не regconize мобильного телефона как объект MobileView, но UIView?

ответ

2

У вас есть:

- (id) initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
    // ... 
    } 
    return self; 
} 

в вашем UIView подкласса @implementation?

+0

Я использовал это: самостоятельно = [[UIView Alloc] initWithFrame: рама]; Я предполагаю, что это вызвало проблему. ВЫ ЛЮДИ, АЛЕКС. – RoundOutTooSoon

+0

@Alex Нужно ли переписывать конструкторы для всех подклассов? –

+0

Я бы переопределил методы initWithFrame и dealloc для подкласса UIView. Другие типы подклассов могут потребовать переопределения других методов. –

1

Перед тем, как позвонить

mobile = [[MobileView alloc] initWithFrame:CGRectMake(0, 100, 150, 150)]; 

Как вы определяете мобильный? Надеюсь, не как UIView *.

Это один из способов сделать это:

MobileView *mobile = [[MobileView alloc] initWithFrame:CGRectMake(0, 100, 150, 150)]; 
+0

Нет, я определил мобильный как MobileView. Проблема заключалась в том, что инициализации FUNC я использовал себя = [[UIView Alloc] initWithFrame: рама] , но это не (само = [супер initWithFrame: кадр]) – RoundOutTooSoon