🐺iOS 開發補完計畫:Swift Macros 信任警告與警報疲勞

13-avatar-img
發佈於🧠 軟體開發思維 個房間
更新 發佈閱讀 4 分鐘

每每去教初學者 iOS 開發,我就會發現自己的專家盲點。

最近一次是這樣:我用了 SwiftUI-TCA-Template 作為示範專案的模版。這個專案有依賴 TCA 等套件,會使用到 Swift Macros 這個功能。而因為 Macros 有機會在電腦執行一些開發者可能沒有意識到的程式操作,有一定程度的安全風險,預設會被當成錯誤擋下來,需要手動確認

由於習慣了,每次遇到這種情況,我都會快速把確認步驟操作完,或是早就設定好一律跳過 Macros 確認。但對於初學者來說,可能會一頭霧水。

以下說明如何在 Xcode 進行同意 Swift Macros 的步驟。

Swift Macros 確認警告

第一次編譯或更新套件時,在 Xcode 的 Issue Navigator 會看到需要確認的警告,例如:

使用 Swift Macros 的套件有更新,所以 Xcode 以錯誤提示阻止專案編譯,需要開發者手動確認

使用 Swift Macros 的套件有更新,所以 Xcode 以錯誤提示阻止專案編譯,需要開發者手動確認

按下去錯誤項目以後,會看到提示:

確認要信任與啟用 Macros 的對話框

確認要信任與啟用 Macros 的對話框

請確認該 Macros 是你信任的(比如來自你信任的開發者),然後按下「Trust & Enable」。

這樣子就把「錯誤」給解決了,之後應該可以正常編譯。

如何自動跳過

這種認證雖然有其必要,但是多次重複遇到以後,會覺得十分煩人。因為如果每次套件有升版就需要再確認一次、不同電腦也要個別再確認一次。

有經驗的開發者,會知道在 Mac 上用一行指令一勞永逸關掉它的方式:

defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES

CI 設定

比較嚴謹的團隊,在協作開發時會用到 CI 來跑測試。而上述指令,在自行架設的 Mac CI Server 上也很常用。不然有用到 Swift Macros 的專案就會無法編譯。

另一種方式則是在使用 xcodebuild 指令時,加上 -skipMacroValidation 參數。該參數的官方說明:

Skip validation of macros (this can be a security risk if they are not from trusted sources)

最後,如果你使用 Xcode Cloud,那麼跳過 Swift Macros 驗證的方式比較特別。要在專案目錄新增一個 ci_scripts 資料夾,裡面放入一個 script 檔 ci_post_clone.sh,檔案內容就是那一行:

defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES

結語

我覺得 Swift Macros 這種安全確認的機制還有改進空間。因為開發者到後來會傾向無腦地按下信任,甚至直接用指令的方式總是跳過,就等於沒有確認的保護效果。也就是警報疲勞(類似於「狼來了效應」)導致了安全性的下降。

以我自己來說,每台新 Mac 在安裝設定時,就會把這行指令給輸入、一律跳過。以至於在準備課程教材時,就忘了學生第一次會遇到需要確認的障礙。

開發者還是有責任去了解自己所使用的套件、Swift Macros 的來源,學會掌控風險。

不過我希望 Apple 能把「這個新版本 Macros 已經被確認過」的事實記錄下來,甚至加入版本控制。換言之,以專案為單位來信任,而不是以個別電腦為單位來信任。應該能減少開發團隊的麻煩,而且能提升確認的實質保護效果。

留言
avatar-img
13+
3.2K會員
161內容數
13 以 10+ 年 iOS 開發經驗為基礎撰寫,助你在 AI 時代成為更有自信的技術工作者。 ❤️ 支持 13 創作! 🤖 AI 工具實戰經驗與深度思考 🧠 軟體開發思維、職涯發展建議 💡 實用技巧與踩坑經驗分享 😔 開發者身心健康與職業傷害
13+的其他內容
2025/10/29
意外總是會發生,但可以有策略地降低風險。不管是生活還是開發者的日常工作流程,都該有一些容錯的餘裕。
2025/10/29
意外總是會發生,但可以有策略地降低風險。不管是生活還是開發者的日常工作流程,都該有一些容錯的餘裕。
2025/10/28
試錯是一種策略,也是一種態度。在可控制的範圍內犯錯與失敗並不是浪費,而是累積經驗的好方法。請拋開一步達成完美解答的執念,那只會讓你永遠無法開始。
2025/10/28
試錯是一種策略,也是一種態度。在可控制的範圍內犯錯與失敗並不是浪費,而是累積經驗的好方法。請拋開一步達成完美解答的執念,那只會讓你永遠無法開始。
2025/10/27
不做沒必要的修改,保持使用者的習慣,是極難、卻最有長期價值的事情。這種堅持,在 AI 能夠快速產出軟體的時代,更值得考慮。
2025/10/27
不做沒必要的修改,保持使用者的習慣,是極難、卻最有長期價值的事情。這種堅持,在 AI 能夠快速產出軟體的時代,更值得考慮。
看更多
你可能也想看
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
本文檔介紹了在Swift中使用套件的詳細方法,包括如何引用第三方套件和自定義模組,如何創建自定義套件,以及一些常見的Swift套件。這些套件可以幫助開發者快速添加功能到項目中,提高開發效率和程式碼品質。
Thumbnail
本章節介紹了如何建立並設置Swift項目以及如何選擇和設置Swift代碼編輯器。這包括在Xcode和命令行中建立Swift項目,選擇Xcode、Visual Studio Code或AppCode作為編輯器,以及如何使用SPM安裝插件。
Thumbnail
本章節介紹了如何建立並設置Swift項目以及如何選擇和設置Swift代碼編輯器。這包括在Xcode和命令行中建立Swift項目,選擇Xcode、Visual Studio Code或AppCode作為編輯器,以及如何使用SPM安裝插件。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
這份文件的目的是介紹Swift語言,包括它的特性、應用範疇,以及誰在使用它。它也提供了一些學習Swift的資源和工具,以及一些常見的Swift庫和框架。
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News