2011-08-29 47 views
0

正在爲我公司的iPhone應用程序工作。最近升級到XCode 4(但在一個單獨的文件夾中保存了XCode 3的安裝)。XCode 4導致iOS4應用程序崩潰,其中XCode 3沒有

應用程序(如果在XCode 3下編譯並運行)運行穩定並且不會崩潰。 如果編譯並在XCode 4下運行,將運行,打開一個關於屏幕,並允許我通過標籤欄導航到其他頁面之一(記錄筆記頁面)。但是如果我點擊另一個選項卡(一個幾乎不包含任何內容的頁面),它每次都會崩潰。

例外是我的iPod Touch,運行iOS 5.運行良好,所以看起來問題是iOS4上的XCode 4(4.3.5是我目前測試的)。

崩潰日誌是在這裏:http://pastebin.com/p0sXqbSZ

+2

日誌看起來很清楚。 「發送給實例的無法識別的選擇器」。你爲什麼認爲有更大的問題? – Megasaur

+0

因爲沒有代碼已經改變。除了我使用的XCode版本外,沒有任何變化。所有iOS4設備都可以在XCode 3下正常運行此項目。 在一個版本的XCode中編譯時,在同一OS上運行的相同選擇器如何運行,但在另一個版本中是無效的? –

+1

好吧,我有一些奇怪的問題,通過先做一個乾淨的解決Xcode 4。無論如何,UIImage不符合NSCoding標準。還有錯誤。所以你至少可以發佈代碼,最終拋出這個。 – Megasaur

回答

1

如果您使用Xcode 4.2和iOS 5 SDK beta 5或更高版本,那麼您可能會遇到SDK中的錯誤。請參閱this question的接受答案。

有解決方法。這裏有一個最簡單的,首先由Kreuters建議:

@implementation UIImage (initWithCoder) 

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    return nil; 
} 

@end 

如果你能重現錯誤在Xcode 4.2和iOS 5測試版SDK 7,你應該file a bug report

+1

乾杯艾略特。不是一個完整的解決方案,而是一種解決方法,至少我知道它是在蘋果的最後,而不是我的。 –

+0

您是否知道iOS 5.1 SDK中是否需要此解決方法? – Philosophistry

0

從崩潰日誌這似乎是一個UIImage initalization導致崩潰。如果你有任何[UIImage initWithCoder:]的代碼,然後嘗試評論它,然後看看是否有效。如果問題確實存在,請檢查圖像是否仍添加到您的項目中,和/或重新導入圖像。

+0

在任何時候,我都不會使用initWithCoder對圖像進行編碼/解碼。 –

0

您是否嘗試過在「編輯器」下的「現代化項目」?

7 UIKit 0x31f98df3 -[UIImageView initWithCoder:] + 66 
... 
20 UIKit 0x3203b489 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92 
21 UIKit 0x31f90cbd -[UIViewController _loadViewFromNibNamed:bundle:] + 36 

我不知道這一點:

除此之外,問題加載的UIViewController時,似乎在路上蘋果專賣店撒謊從廈門國際銀行文件中的信息,因爲[UIImage initWithCoder:]被稱爲幫助,但試着去看看xibs被創建/檢索的方式發生了什麼變化,或許是一個與你所做的事情相沖突的新特性。或者檢查您正在檢索的任何圖像。

+0

「編輯」菜單中沒有「Modernize Project」。問題清單中也沒有現代化需要解決的問題。 查看.xib文件,僅引用1個圖像。刪除該圖像後,問題依然存在。 –