2013-10-24 71 views
3

此代碼給我的錯誤Cannot find interface declaration for 'OGWView'ObjC類: 「找不到 'typedefname' 接口聲明」

typedef SKNode OGWView; 

@interface OGWView (Category) 
@end 

爲什麼?這個類別不應該和typedef名字一樣工作嗎?

PS:我知道我可以用#define(或使用原始類名)修復此問題,但我更感興趣的是理解爲什麼無法在typedef類上創建類別。

+0

我不知道答案是什麼(我懷疑是編譯器根本就不是尋找一個類型存在),但是這似乎是對我不利的一件好事。爲什麼你會想掩蓋你正在延伸的東西? –

+0

因爲我想用相同的代碼擴展不同但類似的類(取決於當前的構建配置)。我認爲它不會工作,因爲ObjC運行時在涉及類別時根本不是typedef意識,這意味着typedef不是註冊的運行時類,只有原始類是。 – LearnCocos2D

回答

2

我相信這個問題的答案是,你有2種不同的符號。我相信typedef是一個對象,你試圖將它用作類符號。

根據聲明的順序上,你得到不同的警告提示之多:

typedef NSObject Foo; 
@class Foo; 

產量:

重新定義一個對象類型的類型名字正向類「富」被忽略

@class Foo; 
typedef NSObject Foo; 

產量:

重新定義的「富」是不同意義的符號