我試圖在Swift項目中使用第三方Objective-C庫。我已經成功地將庫導入到Xcode中,並且我製作了一個<Project>-Bridging-Header.h
文件,允許我在Swift中使用我的Objective-C類。如何在Swift中用#define宏使用Objective-C代碼
但是我似乎遇到了一個問題:Objective-C代碼包含一個帶有宏#define AD_SIZE CGSizeMake(320, 50)
的Constants.h
文件。導入Constants.h
到我的<Project>-Bridging-Header.h
不會導致我的Swift應用程序可以使用的全局常量AD_SIZE
。
我做了一些調查,發現蘋果的文檔here under "Complex Macros"說
「在斯威夫特,你可以使用的功能和仿製藥來達到同樣的結果 [如複雜的宏]沒有任何妥協。因此, 複雜的宏是在C和Objective-C源文件沒有作出 提供給您的SWIFT CODE。」
讀取後,我得到了它在斯威夫特指定let AD_SIZE = CGSizeMake(320, 50)
做工精細,但我希望在未知道這些值發生變化的情況下,保持與圖書館未來的兼容性。
在Swift或我的橋接頭文件中有這個簡單的修復嗎?如果沒有,是否有辦法替換Constants.h
中的#define AD_SIZE CGSizeMake(320, 50)
,並保留與使用舊宏AD_SIZE
宏的任何現有Objective-C應用程序向後兼容的方法?
您是否嘗試過使用「靜態CGSize」而不是宏? – jtbandes
查看我的回答 –