2012-06-23 55 views
1

我的obj-c類使用了一個C庫(Chipmunk物理引擎),它有一個Obj-C包裝接口。在obj-c @interface中轉發聲明C typedef的選項

我想(cpLayers)添加屬性與花栗鼠類型我的對象,像這樣:

@interface 
@property cpLayers layers; 
... 

最簡單的方法就是#IMPORT「ObjectiveChipmunk.h」,但這似乎是可笑的進口所有的頭文件只是爲了獲得一個可測量的類型。

如果我#導入c「chipmunk_types.h」文件,其中cpLayers被定義爲「typedef unsigned int cpLayers;」,我得到與ARC相關的編譯器錯誤。它們是在chipmunk_types.h中定義並在我的.m文件中使用的宏中的橋/鑄造錯誤。

如果我只添加定義或#include chipmunk_types.h,我會得到重定義錯誤。

有沒有更好的方法來做到這一點?爲什麼ARC錯誤?

+1

如果導入ObjectiveChipmunk.h有效,那麼爲什麼不這樣做呢?如果它被導入其他地方,Xcode解析它將會相對高效。包含主標題時是否顯示ARC錯誤? – gaige

回答

1

看看ObjectiveChipmunk.h,它是使用預處理器定義覆蓋基本Chipmunk類型的地方。如果你想解決這個問題,你可以將這些定義添加爲編譯器標誌,但我不會爲此擔心。畢竟,你已經在做Objective-C編程,你有沒有看過當你導入一些像Foundation.h這樣無害的東西時會被拉進的大量內容?導入完整的ObjectiveChipmunk.h頭文件就好比1%。