一尘不染

如何以编程方式确定我的应用程序是否在iphone模拟器中运行?

swift

正如问题所指出的那样,我主要想知道我的代码是否正在模拟器中运行,但也想知道正在运行或正在模拟的特定iphone版本。

编辑:我在问题名称中添加了“以编程方式”一词。我的问题的关键是能够根据正在运行的版本/模拟器动态地包含/排除代码,因此我真的在寻找可以提供此信息的预处理器指令之类的东西。


阅读 226

收藏
2020-07-07

共1个答案

一尘不染

已经问过,但标题却大不相同。

为iPhone编译时Xcode设置了什么#define

我将从那里重复我的回答:

在SDK文档的“有条件地编译源代码”下

相关定义是TARGET_OS_SIMULATOR,它在iOS框架内的/usr/include/TargetConditionals.h中定义。在工具链的早期版本中,您必须编写:

#include "TargetConditionals.h"

但这在当前(Xcode 6 / iOS8)工具链上不再需要。

因此,例如,如果您要检查设备是否正在运行,则应执行

#if TARGET_OS_SIMULATOR
    // Simulator-specific code
#else
    // Device-specific code
#endif

取决于哪个适合您的用例。

2020-07-07