2012-07-15 31 views
0

我試圖將遊戲移植到iOS,但我遇到了問題。我有一個名爲CKSprite以下方法類:Objective-c的子類化給出鏈接錯誤

- (id)initWithFile:(NSString *)fileName effect:(GLKBaseEffect *)effect 
{  
    if ((self = [super init])) 
    { 
     //some stuff 
    } 
    return self; 
} 

然後我有一個名爲CKPLayer(它在此刻比它繼承沒有其它的方法或屬性的子類:

@property (strong) CKPlayer *player1; 

但當我嘗試使用父類的方法來初始化它:

self.player1 = [[CKPlayer alloc] initWithFile:@"Images/parrot.png" effect:self.effect]; 

我得到這個錯誤:

爲i386硬件架構未定義符號: 「_OBJC_CLASS _ $ _ CKPlayer」,從引用: objc級-REF IN CKViewController.o LD:符號(多個)未找到i386硬件架構 鐺:錯誤:連接器命令與出口失敗代碼1(使用-v來查看調用)

這是我第一次嘗試做這樣的事情,所以我可能做了一些愚蠢的事情。

任何幫助將不勝感激。

#import "CKSprite.h" 

@interface CKPlayer : CKSprite 


@end 
+0

請問'CKSprite'類最終從'NSObject'繼承? – 2012-07-15 19:31:07

+0

在上面的問題中寫了CKPlayer類接口聲明,這可能有助於我們回答。 – Guru 2012-07-15 19:32:04

+0

@KevinGrant,它的確如此。 – Elephantinc 2012-07-15 20:01:14

回答

1

鏈接器缺少CKPlayer類的實現。也許你只是忘了來實現它,因爲它具有「目前沒有其他方法或屬性」,在這種情況下,只需添加一個文件,它應該像:

#import "CKPlayer.h" 

@implementation CKPlayer 
@end 

和ld應該是快樂的

+0

我已經有一個文件,看起來像這樣(以防萬一我犯了一個錯誤,我試圖複製和粘貼你寫的東西,但無濟於事)。 – Elephantinc 2012-07-15 19:55:00

+0

好吧,編譯器不會生成正確的符號,或者它沒有鏈接(是目標文件中包含的文件嗎?是否與項目的其餘部分使用相同的arch i386編譯?) – cdelacroix 2012-07-15 20:03:06

+0

您已經擁有它了!該文件被包含在「編譯源」下)出於某種原因(我不知道爲什麼)。非常感謝:D – Elephantinc 2012-07-15 20:05:02

相關問題