我的环境:在OS船长中使用Xcode 6.4的ObjectiveC (10.11.1)。在Xcode中,目标被设置为iOS 8。
TARGET_IPHONE_SIMULATOR总是在下面的代码中解析为true,即使我选择iPad2作为iOS模拟器。
#if TARGET_IPHONE_SIMULATOR
// block of code
#endif在选择TARGET_IPHONE_SIMULATOR作为iOS模拟器时,是否应该将iPad2设置为false?
发布于 2016-01-30 00:12:54
对于任何模拟器的构建,这个宏都是正确的。宏在iPad出现之前很久就已经存在了。回到"iOS“是"iPhone OS”的时候。
所以把它想象成"TARGET_IOS_SIMULATOR“。
当您的代码中有一些只在为模拟的iOS设备构建时才应该编译的内容时,就会使用它。
如果您需要在iPhone模拟器和iPad模拟器之间以不同的方式运行,您可能需要如下所示:
#if TARGET_IPHONE_SIMULATOR
// This code is only for a simulator
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) {
// iPhone/iPod touch simulator
} else {
// iPad simulator
}
#endif发布于 2021-03-21 04:35:22
对于任何使用Swift版本>= 4.1的开发人员来说,最好使用#if targetEnvironment(simulator)。参考资料:目标环境平台条件
代码:
extension UIDevice {
static var isSimulator: Bool {
#if targetEnvironment(simulator)
return true
#else
return false
#endif
}
}https://stackoverflow.com/questions/35096307
复制相似问题