【问题标题】:Macro condition for iOS and OSX codeiOS 和 OSX 代码的宏条件
【发布时间】:2015-03-16 18:55:31
【问题描述】:

我需要在我的共享库中支持 iOS 和 OSX,调节 iOS 和 OSX 代码的最佳宏/实践是什么

下面的代码由于某种原因不起作用:/

- (NSString *)hostName {
    #ifdef TARGET_OS_IPHONE
        return [[UIDevice currentDevice] name];
    #elif TARGET_OS_MAC
        return [[NSHost currentHost] localizedName];
    #endif
}

【问题讨论】:

  • 您是在寻找构建两个独立的库(这是您需要对问题中发布的代码执行的操作),还是在寻找运行时解决方案?
  • 编译器指令不能用于运行时检查。而且我不认为您可以构建一个支持 iOS 和 OS X 的共享库。我相信您需要两个独立的库,因为处理器完全不同。您也许可以构建一个框架,每个框架都有单独的幻灯片。但无论哪种方式,您最终都会分别编译。

标签: ios objective-c cocoa cocoa-touch macros


【解决方案1】:

两个问题:

  1. 使用#if 而不是#ifdef
  2. 首先检查 TARGET_OS_IPHONE,因为两个平台的 TARGET_OS_MAC 都定义为 1

见: Which conditional compile to use to switch between Mac and iPhone specific code?

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多