iOS App 从 0 到 1

真机、调试与常见崩溃

断点、配对信任、部署版本、签名——对照截图排障。

01看控制台

调试区没开:菜单 View → Debug Area → Activate Console,或快捷键 ⇧⌘C。在会执行到的代码里 print,⌘R 后看底部输出。

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
            Text("你好,iOS")
        }
        .padding()
        .onAppear {
            print("界面出现了")
            debugPrint("你好,iOS")
        }
    }
}
崩溃时先看红色错误 + 控制台堆栈;Issue 导航器也会列出编译期问题。输出出现在底部调试区右侧(有 (lldb) 提示符)。

02断点怎么用

在行号左侧点一下出现蓝色箭头;⌘R 跑到该行会暂停(行会高亮,右侧可能出现 Thread 1)。本图是命中断点后的样子。

命中断点:调试导航器、调试控制条、lldb 控制台

代码行旁蓝箭头 = 断点;命中后 Canvas 可能显示 Canvas paused。① 调试导航器(调用栈)· ②~⑪ 调试控制条 · ⑫ 当前位置 · ⑬ 控制台 / lldb。点图可放大。

行号旁下断点 → ⌘R → 停住看栈 / 变量 → 继续或单步
编号区域作用
①调试导航器CPU/内存 + 调用栈;点栈帧可跳到对应代码
②断点总开关一次性启用/禁用全部断点
③继续 Continue继续跑到下一断点(⌃⌘Y)
④Step Over执行当前行,不进入函数(F6)
⑤Step Into进入当前行调用的函数(F7)
⑥Step Out跳出当前函数
⑦~⑪视图层级 / 内存图等进阶排错用,新手可先跳过
⑫位置条当前停在哪个线程 / 哪个闭包
⑬控制台看 print 输出;也可输入 lldb 命令
SwiftUI 的 body 可能被多次调用,断点会停好几次——属正常。想少停:断点设在按钮动作或 onAppear 里你自己的逻辑上。
流程:下断点 → ⌘R → 停住看 ①⑬ → 点 ③ 继续。不用时再点蓝箭头取消,避免每次都卡住。

03真机准备

数据线连 iPhone → 手机上点「信任」→ 等配对完成 → 工具栏选真机 → ⌘R。

连接 iPhone → 点「信任」 → 等配对完成 → 选真机 ⌘R
iPhone 弹窗:要信任此电脑吗

第一次连接会弹出「要信任此电脑吗?」——点右侧 信任(可能还要输入锁屏密码)。点图可放大。

设备列表显示 pairing is in progress

① 点工具栏设备名 · ② 真机若显示 pairing is in progress,说明还在配对,先别急着 Run。

Xcode 提示 pairing is in progress

Xcode 提示:在手机上处理信任对话框,并等到配对完成。点 OK,回到手机确认「信任」,稍等再打开设备列表。

若提示「未受信任的开发者」:iPhone 设置 → 通用 → VPN 与设备管理 → 信任你的开发者证书。

04真机系统版本太低?

若设备列表写着 OS version lower than deployment target,或弹出「iOS 18.5 doesn’t match … iOS 26.5 deployment target」,说明工程要求的最低系统高于手机当前系统。

设备列表:iPhoneXr OS version lower than deployment target

① 工具栏设备 · ② 真机不可用,原因是系统版本低于工程 Deployment Target。

弹窗:手机 iOS 18.5 与工程 26.5 部署目标不符

例如:手机 iOS 18.5,工程却要求 26.5 —— 装不上。点图可放大。

解决(推荐):把工程最低部署版本降到 ≤ 手机系统。改完再选真机 ⌘R。
降低 Minimum Deployments:工程 → General → TARGETS → iOS 版本

① 左侧点蓝色工程名 · ② 打开 General · ③ 选中 TARGETS → HelloWorld(不要停在 PROJECT)· ④ Minimum Deployments → iOS 改成 ≤ 手机系统(如图 18.6,或 18.0 / 17.0)。点图可放大。

做法说明
降低 Deployment Target新手首选;兼容旧手机
升级手机系统若手机还能升到 ≥ 工程要求;旧机型可能升不到最新
继续用模拟器真机暂时搞不定时,用 iPhone 模拟器练手
新建工程时,Xcode 有时把 Minimum Deployments 设成跟当前 SDK 一样高。真机偏旧时,记得主动调低。

05签名在说什么

Apple 要确认「这个包是谁打的、能装在哪些设备」。

Signing & Capabilities:勾选 Automatically manage signing 并设置 Bundle Identifier

① 左侧点蓝色工程名 · ② 打开 Signing & Capabilities · ③ 勾选 Automatically manage signing(并选好 Team)· ④ 确认 Bundle Identifier 全局唯一。点图可放大。

Automatic Signing

勾选后 Xcode 自动创建证书与描述文件。新手保持勾选即可。

Bundle Identifier

全局唯一 ID,如 com.yourname.HelloIOS。冲突就改一个后缀。

免费账号真机证书有时效,过期再连 Xcode 跑一次通常会续。长期外发请用付费账号 + TestFlight。

iOS App 从 0 到 1 · 主讲 SwiftUI / iOS