2014-07-02 21 views
13

我有一個xcode項目並在設備上運行,調試構建一切都很好。Swift Project構建並運行,但無法歸檔

但是當我嘗試歸檔項目即時得到來自斯威夫特編譯器段錯誤:

0 swift     0x0000000105c36608 llvm::sys::PrintStackTrace(__sFILE*) + 40 
1 swift     0x0000000105c36af4 SignalHandler(int) + 452 
2 libsystem_platform.dylib 0x00007fff852705aa _sigtramp + 26 
3 libsystem_platform.dylib 0x0000000000000002 _sigtramp + 2061040242 
4 swift     0x0000000105f51896   swift::TypeBase::getTypeOfMember(swift::Module*, swift::ValueDecl const*, swift::LazyResolver*, swift::Type) + 534 
5 swift     0x00000001050eee38 swift::SILType::getFieldType(swift::VarDecl*, swift::SILModule&) const + 56 
6 swift     0x00000001051a1252 (anonymous namespace)::SILSROA::run() + 3602 
7 swift     0x000000010516b116 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) + 310 
8 swift     0x000000010516b6f9 swift::SILPassManager::runOneIteration() + 761 
9 swift     0x000000010516b92b swift::SILPassManager::run() + 251 
10 swift     0x000000010516afbc swift::runSILOptimizationPasses(swift::SILModule&, swift::SILOptions const&) + 1644 
11 swift     0x0000000104ffb141 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 3537 
12 swift     0x0000000104ffa35d main + 1533 
13 libdyld.dylib   0x00007fff885d75fd start + 1 
14 libdyld.dylib   0x0000000000000052 start + 2007140950 

我看到人們在談論某些信達可能會導致這樣那樣的錯誤,但沒有人知道如何嘗試並追蹤哪些代碼段導致段錯誤?

+1

嗨。你有沒有想過是什麼導致了這個問題? –

+0

其實我沒有把我的快速發展擱置,對不起 –

+0

@JozefDransfield你能否請求檢查,如果我的解決方案爲你工作? – deathhorse

回答

32

我有一個類似的問題,並且「解決方案」是將版本配置的構建設置中的swift編譯器代碼生成優化級別轉換爲-Onone。這是Xcode 6.0.1的。 Turning off swift compiler optimization

+1

我的確是上述問題,並修復了這個問題。很想知道原因是什麼。 –

+0

找到這個答案之前我找到了這個答案(不幸),是的,這絕對是發佈版本(歸檔)的優化級別。沒有游泳的作品。 ;-) –

+0

男人,你真棒。我在這一個上浪費了幾個小時。非常感謝! –

0

我也有這個問題,我發現代碼中的某些結構似乎會導致編譯器崩潰。

一個構建的是,當你使用太多[weak self]就像這樣:

whatever { [weak self] in 
    whatever2 { [weak self] in 
    } 
} 

第二[weak self]是不必要的,會導致編譯器將崩潰。

3

降低優化級別(這絕對不是一個如何解決編譯問題,除非你使用一些漂亮的低級別的東西或一些特色)。

看看編譯器試圖告訴你什麼 - yeap。它還不是人類可讀的日誌。但你可以閱讀,不是嗎?:)

我有這樣的問題。

While running pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__". 

如果你仔細看看那個爛攤子,你會發現你在做某種上傳,這是不允許的。

這是什麼意思?看着你的功能

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) 

並找到你施放launchOptions[NSObject : AnyObject]?

在SWIFT 3已經變成[UIApplicationLaunchOptionsKey: Any]?的地方。刪除該投射並更新代碼launchOptions[NSObject : AnyObject]?

是否有幫助,剛打開驚人迅疾整個模塊的優化回到+如果你沒有一個線索整個模塊的優化是什麼 - >閱讀這篇文章:

https://swift.org/blog/whole-module-optimizations/

+0

你的分析非常棒。幸運的是,這裏有像你這樣的專業人士,不僅複製/粘貼快速修復。高度讚賞! – SalvoC

+0

很樂意幫忙;) – deathhorse

-1

在一個從另一家開發公司繼承的項目,我們面臨同樣的錯誤。我們注意到有一些與Swift語言版本C++語言方言(在Apple LLVM部分中)有關的一些定製構建設置。以下是我們要修復的內容:

  • 將Swift版本恢復爲默認值(它是2。前3)
  • 復位相關的C++方言
  • 所有選項更新艙體與pod update並修正了一些新的警告

那時我們能夠構建和歸檔項目。

此外,當您將設備設置爲通用iOS設備,它遵循的步驟順序是非常重要的:

  • 產品»清潔
  • 產品»構建
  • 產品»存檔