Skip to main content
 首页 » 操作系统

ios之不要在跨平台 iOS/OSX 模块上的 OSX 代码中编译 iOS

2024年01月01日58jirigala

我正在构建一个将在 iOS/OSX 应用中使用的模块。

客户坚持认为该模块可以在 iOS 和 OSX 上运行。

我需要检查我在 iOS 和 OSX 上使用 UIDevice 时使用的系统版本 FTWDevice .

问题是,当我尝试在 OSX 上编译它时,它会提示 OSX 不支持 UIDevice。

我想知道是否有一种方法可以告诉编译器在 iOS 而不是在 OSX 上编译一行代码?

我知道我可以用这个来编译生产环境中的东西:

#ifndef DEBUG 
[Crashlytics startWithAPIKey:CRASHLYTICSKEY]; 
#endif 

是否有针对此问题的解决方案,或者我应该告诉客户他们需要 2 个完全相同的模块,除了一条线?

另一个可接受的解决方案是在不涉及使用 UIDevice 的 iOS 上查找系统版本的解决方法。

请您参考如下方法:

查看 TargetConditionals.h。具体来说:

#if TARGET_OS_MAC 
 // Mac-only code here 
#endif 
 
#if TARGET_OS_IPHONE 
 // iOS-only code here 
#endif