2015-02-10 35 views
0

我在Swift/SpriteKit/MacOS中有一個簡單的應用程序,用於學習Swift。它主要處理文本文件 - 我很高興地說,Swift非常棒。Swift 1.2 BAD_EXEC_ACCESS啓動時

我下載了1.2和運行轉換器,它提出的一行代碼進行更改:

NSApplicationMain(C_ARGC, C_ARGV) 

必須成爲:

NSApplicationMain(Process.argc, Process.unsafeArgv) 

現在,當我運行一個崩潰的應用程序BAD_EXEC_ACCESS在該行上。堆棧似乎沒有顯示任何有趣的東西;它似乎很早就崩潰了。

我把一個斷點上線和POed輸入:

["/Development/PAIS/DerivedData/PAIS/Build/Products/Debug/PAIS.app/Contents/MacOS/PAIS", "-NSDocumentRevisionsDebugMode", "YES"] 

沒有什麼兩樣那裏看來的。

+0

好吧,所以我設法提前陷阱,這是一些內存問題,它試圖做一個objc_release死亡。有沒有類似NSZombies的追蹤? – 2015-02-10 22:42:49

回答

0

好的,我希望這可以節省別人一些時間。問題是fullName.componentsSeparatedByString,它有一個bug釋放Obj-C端的字符串,並在下一個GC循環中導致雙重釋放。相反,使用split(striped!, { $0 == " "}, maxSplit: Int.max, allowEmptySlices: false),雖然這明顯慢得多。

0

我發現時不時發現,Xcode往往會因爲數據緩存而拋出一個糟糕的配合。嘗試關閉Xcode,刪除「DerivedData」文件夾並重新打開Xcode。然後它會重新索引所有內容,希望這會對您的問題進行分類。

+0

我明白你要去哪裏了...但可惜沒有運氣:-( – 2015-02-10 22:25:45