我正在開發適用於iOS的SDK,我使用預處理宏,以改變我的代碼的行爲,例如預處理器宏:如何使用第三方框架中使用
#ifdef Home
NSLog(@"I'm at home");
#endif
現在我建一個框架來提供我的SDK,但如果我嘗試將它導入測試應用程序中,代碼永遠不會執行。我嘗試將相同的預處理器宏添加到應用程序目標器中,但未成功。
請你能告訴我如何設置第三方框架內定義的預處理器宏?
感謝 朱利奧
我正在開發適用於iOS的SDK,我使用預處理宏,以改變我的代碼的行爲,例如預處理器宏:如何使用第三方框架中使用
#ifdef Home
NSLog(@"I'm at home");
#endif
現在我建一個框架來提供我的SDK,但如果我嘗試將它導入測試應用程序中,代碼永遠不會執行。我嘗試將相同的預處理器宏添加到應用程序目標器中,但未成功。
請你能告訴我如何設置第三方框架內定義的預處理器宏?
感謝 朱利奧
您應該添加
#define Home
向該大分子將能夠執行
#ifdef Home
NSLog(@"I'm at home");
#endif
我在「我的目標 - >生成設置 - >預處理器宏」中定義了主頁。問題是當我構建框架時,我嘗試將其包含在另一個應用程序中。我必須改變才能執行此NSLog? –
你可以在你的框架中添加'#define Home'到一些.h文件嗎? – gaRik
嗯...請更好地解釋,我不明白你的意思。我使用這些宏來啓用/禁用我的SDK的功能。開發人員可以選擇啓用它或禁用。我認爲開發人員可以將相同的宏添加到其預處理器來啓用它,但這並不是那麼簡單。謝謝 –
不是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
這是一個很好的問題您AFNetworking相關的代碼,雖然是明顯困難的,很少遇到。我也堅持這一點,並希望知道你是否找到了解決方法! – CyberDandy
#debug宏也不適用於swift框架。 #if DEBUG NSLog(@「deubg」)#else NSLog(@「relese」); #endif – Madhu