2010-09-13 28 views
1

我對Obj-C項目中的錯誤有些疑惑。我正在做的事情很簡單,不明白我在這裏失去了什麼。我只是在UIImageView的子類中創建一個非常簡單的方法,然後實例化該類。當我嘗試從我的實例中使用該方法時,編譯器抱怨它沒有實現(雖然它是)在Obj-C中被忽略的子類方法?

任何幫助,將不勝感激。

在我的.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測試]:無法識別的選擇器發送到實例0x4d0e710 2010-09-13 02:13:08.432 spinnerX [7329:207] 終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「* - [UIImageView的測試]:無法識別的選擇發送到實例0x4d0e710」 **

上面說的是[CwheelElement測試]未實現,但它是...有什麼想法發生了什麼?

回答

1

道歉,我發現埋在我的初始化以下行:

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

我把它改成下面和我不再遇到的問題:

self.image = [UIImage imageNamed:pieceGraphicFilename]; 
+0

感謝您回覆併發布您的解決方案,我正在對我的一個子類做同樣的事情。 – 2012-07-20 21:43:10

1

順便說一句,強烈推薦從初始化程序返回(id)以便在子類化時不會在同一個問題中運行。

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