我正在构建一个将在iOS / OSX应用中使用的模块。
客户端坚持认为该模块适用于iOS和OSX。
我需要检查我在iOS和OSX上使用FTWDevice进行UIDevice的系统版本。
问题在于,当我尝试在OSX上编译它时,它抱怨OSX不支持UIDevice。
我想知道是否有一种方法可以告诉编译器在iOS上编译一行代码但不在OSX上编译?
我知道我可以用这个来编译生产的东西:
#ifndef DEBUG
[Crashlytics startWithAPIKey:CRASHLYTICSKEY];
#endif
是否有解决方案,或者我应该告诉客户他们需要2个完全相同的模块,除了一行?
另一个可接受的解决方案是在iOS上查找并不涉及使用UIDevice的系统版本的解决方法。
答案 0 :(得分:2)
看看TargetConditionals.h
。具体做法是:
#if TARGET_OS_MAC
// Mac-only code here
#endif
#if TARGET_OS_IPHONE
// iOS-only code here
#endif
答案 1 :(得分:1)
另一个可接受的解决方案是找到解决办法 iOS上的系统版本,不涉及使用UIDevice。
您可以按照以下步骤获取系统版本(OS X和iOS):
func majorVersion() -> Int { return NSProcessInfo.processInfo().operatingSystemVersion.majorVersion }
func minorVersion() -> Int { return NSProcessInfo.processInfo().operatingSystemVersion.minorVersion }
func patchVersion() -> Int { return NSProcessInfo.processInfo().operatingSystemVersion.patchVersion }
func myOSVersion() -> String { return NSProcessInfo.processInfo().operatingSystemVersionString }