Iphone Obj-C中忽略的子类方法?
我对Obj-C项目中的一个错误有些困惑。我所做的很简单,不明白我在这里遗漏了什么。我只是在UIImageView的子类中创建一个非常简单的方法,然后实例化该类。当我试图从我的实例中使用该方法时,编译器会抱怨它没有实现(尽管实现了) 任何协助都将不胜感激 在my.h文件中:Iphone Obj-C中忽略的子类方法?,iphone,objective-c,oop,iphone-sdk-3.0,Iphone,Objective C,Oop,Iphone Sdk 3.0,我对Obj-C项目中的一个错误有些困惑。我所做的很简单,不明白我在这里遗漏了什么。我只是在UIImageView的子类中创建一个非常简单的方法,然后实例化该类。当我试图从我的实例中使用该方法时,编译器会抱怨它没有实现(尽管实现了) 任何协助都将不胜感激 在my.h文件中: @interface CwheelElement : UIImageView { int type; int position; int row; float rotation; } - (CwheelElement *)
@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
在my.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喷丝头[7329:207]-[UIImageView测试]:未识别的选择器发送到实例0x4d0e710
2010-09-13 02:13:08.432喷丝头[7329:207]由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:“*-[UIImageView测试]:未识别的选择器发送到实例0x4d0e710”**
它说,[cWheeleElement测试]没有实现,但它是。。。知道发生了什么吗?抱歉,我发现在我的初始值设定项中隐藏着以下行:
self = [[UIImageView alloc] initWithImage:[UIImage imageNamed:pieceGraphicFilename]];
我将其更改为以下内容,不再存在此问题:
self.image = [UIImage imageNamed:pieceGraphicFilename];
顺便说一句,强烈建议从初始值设定项返回(id),以免在子类化时遇到同样的问题
- (id) initWithType:(int) iType andPosition:(int) iPosition onRow:(int) iRow;
感谢您回来发布您的解决方案,我对我的一个子类也做了同样的事情。