2012-10-17 68 views
3

我剛剛將我的xcode升級到版本4.5.1。
一切工作正常之前,但現在,當我歸檔項目,xcode卡住/掛並永遠不會完成存檔。
在頂部的情況,文中說:以後Xcode 4.5.1在歸檔時卡住

編譯的10個源文件10 ...

什麼也沒有發生。它只是卡住了。
我仍然可以編譯和構建代碼(無需存檔),並且模擬器中的所有內容都可以正常運行。

我已經重新安裝了xcode。那個問題在那之後仍然發生。
任何建議將被appriciated。

更多信息:
我已經精確定位的問題,以特定的代碼行:
CGRect tmpFrame3 = seeDetailsButton.frame;
我看不出有什麼問題,這條線...
爲什麼會建在做工精細並在模擬器中運行,但歸檔時失敗?

+0

怎麼樣日誌窗格;那會告訴你Xcode在被卡住時做了什麼...... – trojanfoe

+0

你有旋轉色輪嗎? – rocky

+0

當錯誤發生時 - 日誌窗格卡住了,並沒有對它說任何事情。我沒有旋轉色輪。它只是卡住了。我已經找到了問題所在併發布了我的答案。謝謝。 –

回答

6

我想出了這裏發生了什麼。
首先,它與歸檔過程本身無關,但與版本模式中的構建無關。
我在歸檔期間遇到問題的原因是因爲它隨後以發佈模式構建。

關於這個問題本身:
似乎在xcode 4.5.1中有某種蘋果編譯器bug
我正在使用Apple LLVM編譯器4.1。在編譯期間它有不同的優化級別。
在調試中 - 優化設置爲'無'並關閉。在發佈中,它被設置爲'最快,最小[-Os]'。當我在發佈模式下關閉優化(將其設置爲「無」)時,問題不會發生。

更多信息:
挖在我的代碼,並試圖找出優化過程中什麼會導致編譯器錯誤後,我看到了,我有以下幾點:

__weak ProfileButton *tmp = myButton; 

哪裏ProfileButton只是一個常規按鈕從UIButton繼承。
當我刪除__weak一切正常。即使當我將編譯器優化設置爲'最快,最小[-Os]'。

+0

可悲的是,這並不適合我,Xcode 5.1,LLVM 5.1代碼生成器 – NicTesla

0

最近面臨同樣的問題,在編譯期間Xcode掛在最終文件上。以與上述問題相同的方式,將release的優化級別設置爲None([-O0]以匹配調試模式)將允許歸檔成功運行。

但是,我們的代碼的特定錯誤被捆綁到被捕獲的自我塊。每Apple's guidelines

「如果你需要捕獲在一個塊的自我,這樣的定義 回調塊時一樣,它要考慮內存管理 影響是很重要的

塊保持強勁引用任何捕獲。對象包括 自我,這意味着它很容易具有較強的參考 週期結束了......」

所以一定要檢查你的代碼這一點,如果適用, nd遵循蘋果的最佳做法,以獲取對自己的弱引用(example in documentation)。

0

在我來說,我創建了一個circlic子

這就像

@interface BaseTableViewController : PaymentTableViewController 

@interface PaymentTabelViewController : BaseTableViewController 

什麼,我所做的是reneme最後一個子類,所以它現在看起來是這樣:

@interface TopTableViewController : PaymentTableViewController 

@interface PaymentTableViewController : BaseTableViewController 
0

在我的情況下,問題出現了,當一個源文件包含了非常大陣這樣的聲明:

NSArray<NSArray<NSNumber *> *> *points = 
    @[ 
     @[@38.576732f, @-90.230682f, @1495320246], // 1 item 
     ... 
     @[@37.478034f, @-89.524851f, @1495336147] // 3000 item 
    ]; 

有3K左右的項目。將源代碼分割成小的代碼不會有幫助。

通過將項目放入CSV文件並在運行時解析它來修復它。

另一種方法可能是拆分成更小的數組並在運行時進行連接。