Apple Developer onepage/WWDC26
#WWDC26#Xcode#GroupLab2026-06-11 · 65 分鐘

Xcode Group Lab:把 日常摩擦 變成可調整的工作流

這場 Q&A 不是單一 API session,而是 Xcode 團隊把多年開發痛點拆成具體做法:少一點 project file conflict、少一點 Derived Data 儀式、更多可觀測的 build、debug、preview 與 agent workflow。

// 一句話結論

最有價值的不是某個快捷鍵,而是把 Xcode 當成一套可調整的系統:檔案組織、搜尋、profiling、breakpoint、CI、signing 與 agent context 都要有明確的 source of truth。

Apple Developer · WWDC26 · Video ID: ygSPAu7JMWQYouTube 來源
Content map

這場 Lab 在拆四種 Xcode 日常問題

探索 API

Playground macro 讓任意 Swift file 變成實驗場

不用離開專案建立獨立 playground;在 Swift file 裡用 macro 跑片段、看 expression results,也能拿來試 Foundation Models 或 UI preview。

團隊衝突

用 folders 取代 groups,降低 project file diffs

藍色 folders 不把檔案清單寫進 project file,新增檔案時更不容易讓多人協作卡在 pbxproj conflict。

除錯

Breakpoint action 比 print debugging 乾淨

條件、hit count、sound、log message、backtrace 與 LLDB command 可以暫時觀測狀態,不必把臨時 print 留在程式碼裡。

建置健康

Derived Data 是症狀,不是修復策略

Xcode 27 加了刪除 Derived Data menu item,但團隊強調反覆需要刪除通常代表 missing dependency、build race、空間壓力或 Xcode bug。

Decision map

遇到 Xcode 卡住時,先問是哪一層壞掉

1

只是探索程式碼?

用 Open Quickly、Command-Shift-J、jump bar filter、find call hierarchy、type hierarchy 與 search navigator 篩出真正在改的範圍。

2

是 preview 或 playground 慢?

它們共用 build artifacts。先處理 modularization、explicit dependencies 與 build timeline,再期待 preview reload 變快。

3

是 runtime 狀態看不懂?

先用 variables view、conditional breakpoint、LLDB expression、memory graph 匯出到 Instruments,而不是只靠 PO 或 print。

4

是 build 不穩?

刪 Derived Data 可以救急,但要回頭查 target dependency、parallel build ordering、Swift Build log 與可重現的 feedback。

5

是 release pipeline?

Xcode beta 可以與舊版共存,但要管好 SDK 使用、xcode-select、Xcode Cloud matrix,以及 signing/provisioning 的責任邊界。

重點 1:Xcode 27 beta 可以試,但不要不小心升級產品約束

團隊明確說可以同機使用 Xcode 26 與 Xcode 27 beta,但要守住「仍能用 shipping Xcode build」這條線。新 SDK、新 project validation 或新專案格式一旦被正式採用,就可能影響要出貨的版本。

實務上要把 Xcode 27 當成探索與 CI matrix 的一格,而不是立刻替代 release toolchain。對要送 App Store 的 app,尤其要確認 xcode-select、Xcode Cloud workflow 與 local signing 設定沒有混用。

新 themes 可替 workspace 上色不同專案或 debug Xcode 可以用不同外觀,降低切換時誤操作的機率。
Paste into navigator 可快速拆檔把 type 宣告剪下後在 file navigator 貼上,Xcode 會依內容建立新 Swift file。
Preview tabs 可以 pin在資料檔和 SwiftUI view 間移動時,pin 住 preview tab,讓 canvas 繼續更新。
Folders 減少 pbxproj 衝突若團隊常因新增檔案衝突,這是比「學會解 pbxproj」更根本的處理。

重點 2:搜尋與 profiling 是重構前的導航系統

這場 Lab 多次回到「先縮小範圍」:find call hierarchy 看 function call site,type hierarchy 看 protocol/類型繼承,search navigator 可用 regex、symbol、多字 proximity,再用下方 filter 做類 boolean 的收斂。

性能問題也一樣。Memory Graph Debugger 適合找 leaks,但 footprint 與時間線應該丟到 Instruments;flame graph、top functions、SwiftUI instrument、concurrency template 與 Foundation Models template 都是把問題從感覺拉回證據的方式。

重點 3:Agent workflow 要把上下文寫到磁碟

有開發者問到 coding agent context compression 後模型失去專案理解。Xcode 團隊的方向不是把全部內容塞進一個超長檔,而是先用 plan mode 產出可引用 artifact,讓模型在新 session 或不同模型間有穩定的 project source of truth。

這和本地 automation 很像:對長任務來說,plan、state、memory、checklist 與可重跑命令,比「希望 chat window 永遠記得」可靠。

風險與遷移注意事項

不要把 Derived Data 當作根因修復若一再需要清掉,應該收集可重現步驟與 build logs,查 target dependency 或回報 Xcode bug。
Swift format 不一定要跑在 build phase若 format 造成磁碟 reload alert,可改成 save、commit hook 或 PR 前流程,降低寫 code 時的干擾。
Release configuration 不等於 local distribution signing本機 profiling/debug 需要 debuggable entitlements;App Store 上傳時才做 distribution signing。
Public API unused detection 有邊界compiler 能警告 local unused variable,但 public property/function 是否被外部使用,靜態分析不能亂判定。

來源

主要來源為 Apple Developer YouTube RSS metadata、YouTube 影片與英文自動字幕。Group Lab 目前未找到 Apple Developer 影片頁 transcript,因此本頁以 Q&A 字幕內容整理,不臆測字幕以外的 demo。YouTube:WWDC26: Xcode Tips and Tricks Group Lab | Apple。

// TL;DR