iOS:处理TARGET_IPHONE_SIMULATOR宏

use*_*226 2 objective-c ios ios-simulator

我的环境:ObjectiveC在OS X El Captain中使用Xcode 6.4(10.11.1).在Xcode中,target设置为iOS 8.

即使我选择iPad2作为iOS模拟器,TARGET_IPHONE_SIMULATOR也始终在下面的代码中解析为true.

#if TARGET_IPHONE_SIMULATOR
  // block of code
#endif
Run Code Online (Sandbox Code Playgroud)

选择iPad2作为iOS模拟器时,不应将TARGET_IPHONE_SIMULATOR设置为false吗?

Jer*_*oia 14

请注意,iOS 9中引入了较新的宏以及tvOS和watchOS,并且当时不推荐使用TARGET_IPHONE_SIMULATOR宏以避免混淆.来自TargetConditionals.h:

        TARGET_OS_WIN32           - Generated code will run under 32-bit Windows
        TARGET_OS_UNIX            - Generated code will run under some Unix (not OSX) 
        TARGET_OS_MAC             - Generated code will run under Mac OS X variant
           TARGET_OS_IPHONE          - Generated code for firmware, devices, or simulator 
              TARGET_OS_IOS             - Generated code will run under iOS 
              TARGET_OS_TV              - Generated code will run under Apple TV OS
              TARGET_OS_WATCH           - Generated code will run under Apple Watch OS
           TARGET_OS_SIMULATOR      - Generated code will run under a simulator
           TARGET_OS_EMBEDDED       - Generated code for firmware

        TARGET_IPHONE_SIMULATOR   - DEPRECATED: Same as TARGET_OS_SIMULATOR
        TARGET_OS_NANO            - DEPRECATED: Same as TARGET_OS_WATCH