🐺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.3K會員
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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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