iOS和OSX代码的宏条件

Pet*_*isu 4 macros cocoa cocoa-touch objective-c ios

我需要在我的共享库中支持iOS和OSX,它是用于调整iOS和OSX代码的最佳宏/实践

波纹管代码由于某种原因不起作用:/

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

Eri*_*icS 7

两个问题:

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

请参阅: 用于在Mac和iPhone特定代码之间切换的条件编译?