2012-09-20 51 views
1

我有一個奇怪的行爲,在ipod touch 2G中重用CGrects,但不在3G 4G中。 當我用設備插入XCode4運行應用程序時,它工作得很好,但是當我將應用程序歸檔並通過itunes或通過web服務器上傳時,出現了奇怪的行爲。 如果我去編輯方案,選擇存檔,然後選擇生成配置:調試,通過Web服務器上傳應用程序,它工作正常。重用CGRects不起作用

我的代碼是這樣的

//this code works perfect 
CGRect pos = self.toolBar.frame; 
pos.origin.y = 0; 
self.toolBar.frame = pos; 

//this code fails, to fix it I need to create a new CGRect (CGRect pos2) 
//or assign an CGRectMake to pos 
pos = self.picker.frame; 
pos.origin.y = self.toolBar.frame.size.height; 
self.picker.frame = pos; 

是什麼原因造成的問題。我怎樣才能比較這些構建配置(調試 - 釋放)

編輯

+0

什麼是錯誤?你能指望什麼?另外,你錯過了一個分號... – 2012-09-20 15:51:29

+2

'self.picker == nil'有可能嗎?那會造成怪異。 – benzado

+0

我猜你在使用'por.picker.frame'而不是'pos.origin.y'時犯了一個錯字。另外,如前所述,你錯過了一個分號。 –

回答

0

在Xcode運行與歸檔之間的主要區別是DEBUG與發佈版本,特別是編譯器優化這是在你的發佈版本啓用。

您可能會看到與armv6處理器相關的LLVM編譯器優化錯誤,我遇到了非常類似的事情。嘗試從LLVM切換到GCC編譯器。這是否可以解決您的問題?此外,如果您升級到XCode 4.5,您會發現ARMV6已被棄用,因此您也可以選擇放棄對這些舊設備的支持,並與Apple保持同步。

+0

不幸的是,我不能離開舊設備的原因這個應用程序是一個企業發展,我想離開他們,但不取決於我 – crono81