2015-04-17 59 views
3

我正在開發適用於iOS的SDK,我使用預處理宏,以改變我的代碼的行爲,例如預處理器宏:如何使用第三方框架中使用

#ifdef Home 
    NSLog(@"I'm at home"); 
#endif 

現在我建一個框架來提供我的SDK,但如果我嘗試將它導入測試應用程序中,代碼永遠不會執行。我嘗試將相同的預處理器宏添加到應用程序目標器中,但未成功。

請你能告訴我如何設置第三方框架內定義的預處理器宏?

感謝 朱利奧

+0

這是一個很好的問題您AFNetworking相關的代碼,雖然是明顯困難的,很少遇到。我也堅持這一點,並希望知道你是否找到了解決方法! – CyberDandy

+0

#debug宏也不適用於swift框架。 #if DEBUG NSLog(@「deubg」)#else NSLog(@「relese」); #endif – Madhu

回答

0

您應該添加

#define Home 

向該大分子將能夠執行

#ifdef Home 
NSLog(@"I'm at home"); 
#endif 
+0

我在「我的目標 - >生成設置 - >預處理器宏」中定義了主頁。問題是當我構建框架時,我嘗試將其包含在另一個應用程序中。我必須改變才能執行此NSLog? –

+0

你可以在你的框架中添加'#define Home'到一些.h文件嗎? – gaRik

+0

嗯...請更好地解釋,我不明白你的意思。我使用這些宏來啓用/禁用我的SDK的功能。開發人員可以選擇啓用它或禁用。我認爲開發人員可以將相同的宏添加到其預處理器來啓用它,但這並不是那麼簡單。謝謝 –

0

不是100%肯定,但可能是你能想到的CocoaPods爲您你的框架內的依賴關係。如果可能的話,創建一個前綴頭。在你的podspec中,你可以識別子配置(使用你的框架的最終開發者必須提及的依賴關係 - 誰想要啓用或禁用),你可以定義「prefix_header_contents」來添加宏。

比方說,如果最終開發商想使你的框架提供的「AFNetworking」的功能,開發人員應該使用他的POD文件添加你的框架像

莢「YourFrameworkPod」:subspecs = > [「AFNetworking」]

這會將您的框架以及AFNetworking添加到開發人員的項目中。

你必須定義podspec像

s.subspec 'AFNetworking' do |af| 
    af.prefix_header_contents = '#define AF_EXISTS' 
    af.source_files = 'YourPod/Classes/**/*' 
    af.dependency 'AFNetworking' 
end 

所以,你可以做內部

#ifdef AF_EXISTS 
    Your stuff! 
#endif 
相關問題