正如问题所述,我主要想知道我的代码是否在模拟器中运行,但也想知道正在运行或被模拟的特定iPhone版本.

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

推荐答案

已经问过了,但标题完全不同.

What #defines are set up by Xcode when compiling for iPhone

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

它在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

取决于哪一个适合您的用例.

Ios相关问答推荐

Nomb iOS 17.4.0中崩溃

如何在react 本机模块中使用Bundle.main.Path()在SWIFT中导入assets资源

在SwiftUI中动态隐藏列表的空部分

如何根据SWIFT中的按钮点击更新文本值

iOS上从谷歌云存储API不断收到网络连接已丢失的错误信息

在 Swift 中从 Objective C 集合调用块

一对多关系 Firebase 实时数据库(嵌入数百万条 comments )

在视图控制器中实例化视图控制器是否可能/智能?

迁移到 UIKit 生命周期的应用程序不会调用 SceneDelegate

有哪些可靠的机制可以防止 CoreData CloudKit 中的数据重复?

async/await、Task 和 [weak self]

如何在 Swift 中旋转 UIButton 和 UILabel 的文本?

UITableView 页脚,停止浮动内容

iOS 中是否有用于自定义振动的 API?

interfaceOrientation在 iOS 8 中已弃用,如何更改此方法 Objective C

try 在 iOS 中处理后退导航按钮操作

应用程序不包含正确的测试版权利

如何更改uitableview删除按钮文本

从 UIScrollview 中删除内容和框架布局指南

Flutter:如何创建一个新项目