2015-11-10 241 views
0

我有內部錯誤,編譯我的Xcode項目上大約一半的我斯威夫特文件,您可以在隨附的屏幕截圖 Xcode error report 其中每看到文件與線終止的一般形式:的Xcode崩潰

在一種情況下
static let mapController=viewControllersFactorySingleton.sharedFactory().mapController 

我試圖替換代碼:

static var mapController:MovableAnnotationDelegate! 
override public class func initialize(){ 
    mapController=viewControllersFactorySingleton.sharedFactory().mapController 
} 

但我不得不在初始化時死機:

  1. 雖然發射IR SIL功能@ _TZFC10inArrivoHD14PalettaTraffic10initializefMS0_FT_T_爲 '初始化' 在/用戶/ fbartolom /文檔/可可 應用/ inArrivoHD/inArrivoHD/PalettaTraffic.swift:25:21

先前它在單線上。

即使崩潰Xcode的代碼有什麼問題?

+0

我在編譯使用早期版本的Xcode創建的項目時看到過像這樣好奇的崩潰。如果在這種情況下,我建議選擇目標(左側項目導航器面板中的樹頂部),然後在「編輯器」菜單上選擇「驗證設置...」。 – Rob

+0

正如所說的,一旦我將工廠類移到Swift中,崩潰就暫時消失了。目前我的問題是我從Swift中將類型協議的變量導出到objective-c,這是後面解決方案的後果。 –

回答

0

通過將工廠類移植到Swift,崩潰消失了。崩潰必須歸因於swift和objective-c模塊之間的互操作;什麼變得越來越不穩定。

1

編譯器崩潰總是編譯器中的一個錯誤。打開雷達(bugreport.apple.com)。

您可以嘗試通過註釋掉代碼的不同部分,直到它停止崩潰,來精確縮小造成崩潰的原因。然後你可以嘗試做別的事情。大多數情況下,這意味着你的代碼不正確,而不是產生錯誤,編譯器崩潰。有時,如果您查看所有日誌輸出(單擊文件名右側的行),則可以找出可能的位置,但有時您不能,並且必須使用試驗和錯誤來縮小它的範圍。

當然,請確保您已經檢查了最新的Xcode測試版。他們可能已經修復了這個bug,並且該版本會給你一個適當的錯誤,你可以用它來修復老版本的Xcode中的代碼。

+0

我也嘗試過使用Xcode 7.2,但錯誤依然存在。正如你可能看到的,我開始縮小範圍,從來沒有想象過代碼中的問題,而不是像編譯器那樣報告崩潰! –

+0

「viewControllersFactorySingleton」是一個全局變量還是一個類? (類應該總是領先的,所以我假設一個全局變量。)你不能在'static'定義(或'initialize')中依賴全局變量。無論如何,這段代碼並沒有多大意義。爲什麼這是靜態的? (它也有非常強烈的破壞感,感覺非常類似於Java的「視圖控制器工廠」,這幾乎從未如何在Cocoa中做事)。 –