iOS 和 OSX 代码的宏条件

Macro condition for iOS and OSX code

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

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

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

两个问题:

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

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