2012-03-05 115 views
0

感謝您抽出一些時間來閱讀我的問題。 我有這個應用程序(在蘋果蠹),其中約有10%的用戶與iOS 3.0,所以我想在我的下一次更新中支持他們。加載主XIB使iOS 3.0上的應用程序崩潰

我使用運行iOS 4.0和5.0.1的實際設備對其進行了測試;它工作得很好。但在iOS 3.0崩潰與一個例外:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e, 0x49, 0x42, 0x41, 0x72, 0x63, 0x68, 0x69) 

顯然加載主XIB的時候,這裏的異常回溯:

0 0x30016588 in objc_exception_throw() 
1 0x30224026 in +[NSException raise:format:arguments:]() 
2 0x30223fc6 in +[NSException raise:format:]() 
3 0x305564b4 in -[NSKeyedUnarchiver initForReadingWithData:]() 
4 0x3094927c in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]() 
5 0x30949090 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]() 
6 0x308f131c in -[UIApplication _loadMainNibFile]() 
7 0x308f0f9c in -[UIApplication _runWithURL:sourceBundleID:]() 
8 0x309374b0 in -[UIApplication handleEvent:withNewEvent:]() 
9 0x30936cf0 in -[UIApplication sendEvent:]() 
10 0x3093687c in _UIApplicationHandleEvent() 
11 0x3204696c in PurpleEventCallback() 
12 0x30254a76 in CFRunLoopRunSpecific() 
13 0x3025416a in CFRunLoopRunInMode() 
14 0x308f0354 in -[UIApplication _run]() 
15 0x308eea94 in UIApplicationMain() 
16 0x00003886 in main (argc=1, argv=0x2ffff74c) 

我已閱讀並試圖thisthis。因此,我將所有的部署版本設置爲3.0,並開發到Interface Builder 3.0,但仍然沒有運氣。

+0

你有一箇舊的XCode SDK?你有沒有試過用這種sdk的InterfaceBuilder打開筆尖? – 2012-03-05 09:19:11

+0

感謝@Peter,我認爲有一些進展,我遵循了你的建議,幸運的是我有權訪問Xcode 3.2,我在那裏編譯我的項目,經過一些修復後,它可以在iOS 3.0設備上運行,然後我複製了精確的同樣的項目到Xcode 4.2,我從以前得到同樣的錯誤,我想這是關於新的Xcode編譯項目的方式。 – Emanuel 2012-03-05 20:01:42

+0

我不是100%確定,但我認爲我已經閱讀過某些地方,xcode 4.2筆尖只能向下兼容到iOS 3.2。我試着將最小需求目標設置爲3.2 - 或者嘗試使用用舊sdk創建的nib而不用在XCode 4.2中重新編譯它們。 – 2012-03-06 04:55:52

回答

0

閱讀了一些文檔後,很明顯iOS 3.2之前的版本不會從Xcode 4.2加載NIB,所以我最終用Xcode 3.2構建了項目,並將這些NIB複製到了使用Xcode 4.2創建的DerivedData目錄下的包好的部分是我仍然可以使用Xcode 4.2來調試應用程序,不好的部分是,這是有點哈克,但我沒有選擇。謝謝。

+0

很高興我可以幫助:) – 2012-03-08 09:12:57