概括
我在作業中的 Xcode 專案中遇到了一個嚴重的問題,對于如何進一步縮小或解決這個問題的任何建議、提示或評論,我將不勝感激!
從一兩個星期開始,我們的專案在(在模擬器和設備上)在 Swift 類初始化或使用它們的型別的隨機位置進行除錯時崩潰。
例子
這是它的外觀示例:

- 表視圖無法識別 ListSectionHeader 的繼承
- 列印它的型別時,回傳一個不同的類
- 的回傳類
.self始終是我們 Core.framework 的 Objective-C 類
另一個例子,super.init呼叫失敗,因為除錯器突然將父類混淆為不同的型別:

- 有時它會直接崩潰,當一個 Swift 類被初始化時
BAD_EXEC_ACCESS
我們嘗試過的
到目前為止我們注意到并嘗試過的事情:
- 崩潰在發布版本中消失
- 啟用記憶體或執行緒清理程式后,問題就會消失
- 問題發生在 Xcode 12.4、12.5.1 和 Xcode 13.0
- 我們啟用了“SWIFT_COMPILATION_MODE = wholemodule”,這讓問題消失了一段時間,但在向專案添加更多 Swift 代碼后它又回來了
- 如果我們添加或洗掉 Swift 代碼,崩潰會移動到不同的類,就像移動了類名稱和型別的映射表 (??) 一樣(此處純屬推測)
- 到目前為止,我無法在示例專案中重現該問題
附加資訊
關于我們專案的一些事情:
- 帶有一些靜態框架的 Xcode 作業區
- 核心框架,大部分是 Objective-C 類
- 一個 UserInterface-Framework 是 Swift-only 并在許多類中匯入 Core-Module
- All of our frameworks are part of an umbrella framework that is integrated in a test application that we use for debugging
Ending thoughts
I have my suspicions, that we may accidentally trigger some kind of compiler optimisation bug, that has to do with our mixed Swift and Objective-C code base.
If anybody has any idea on how to narrow down this crash, or has seen these symptoms, I would be very grateful. Right now it prevents us from any development.
uj5u.com熱心網友回復:
我們無法確定問題的根本原因,但是當我們在應用程式的方案中禁用測驗計劃時,我們設法避免了崩潰/錯誤。當我們創建一個新的應用程式目標并且一切正常時,我們注意到了這一點。重新配置目標和方案后,添加UI-test計劃后問題再次出現。
也許這個策略可以幫助任何有類似問題的人。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335886.html
標籤:ios swift objective-c xcode
上一篇:NSNotificationCenter發布通知不起作用
下一篇:計算彩票賠率-關于代碼的問題
