在Obj-C中忽略子类方法?

时间:2010-09-13 07:19:18

标签: iphone objective-c oop iphone-sdk-3.0

我对Obj-C项目中的错误感到困惑。我正在做的事情相当简单,不明白我在这里缺少什么。我只是在UIImageView的子类中创建一个非常简单的方法,然后实例化该类。当我尝试使用我的实例中的方法时,编译器会抱怨它没有实现(虽然它是)

任何帮助都将不胜感激。

在我的.h文件中:

@interface CwheelElement : UIImageView { 
int type;
int position;
int row;
float rotation;
}

- (CwheelElement *) initWithType:(int) iType andPosition:(int) iPosition onRow:(int) iRow;
- (void) rotateByRadians:(float) iRadians;

- (void) test;

@property (nonatomic, assign) int type;
@property (nonatomic, assign) int position;
@property (nonatomic, assign) int row;

@end

在我的.m文件中:

- (CwheelElement *) initWithType:(int) iType andPosition:(int) iPosition onRow:(int) iRow {
 self = [super init];

 /* …stuff */

 return self;
}

- (void) test {
 NSLog(@"testing");
}

尝试使用该课程:

CwheelElement *iElement = [[CwheelElement alloc] initWithType:row3WheelTypes[i] andPosition:i onRow:3];
   [lowerWheelElements addObject:iElement];

   [iElement test];

我收到以下错误:

2010-09-13 02:13:08.431 spinnerX [7329:207] - [UIImageView test]:无法识别的选择器发送到实例0x4d0e710 2010-09-13 02:13:08.432 spinnerX [7329:207] 由于未捕获的异常'NSInvalidArgumentException'而终止应用,原因:'* - [ UIImageView测试]:无法识别的选择器发送到实例0x4d0e710'**

它说[CwheelElement测试]没有实现,但它是......任何想法发生了什么?

2 个答案:

答案 0 :(得分:1)

道歉,我发现我的初始化程序中埋藏了以下内容:

self = [[UIImageView alloc] initWithImage:[UIImage imageNamed:pieceGraphicFilename]];

我将其更改为以下内容并且不再有问题:

self.image = [UIImage imageNamed:pieceGraphicFilename];

答案 1 :(得分:1)

BTW,强烈建议从初始化程序返回(id),以便在子类化时不会遇到同样的问题。

- (id) initWithType:(int) iType andPosition:(int) iPosition onRow:(int) iRow;