2011-06-21 78 views
0

我是項目經理,試圖幫助我的開發人員;崩潰,可能與Restkit有關

我們有一個已準備好提交的構建;在iPad上完成免費測試並進行測試。第二天,當我們開始在iPod和iPhone 3G上進行測試時,我們注意到了一大堆車禍。我們在iPad上重新安裝了這個版本,然後看到那裏也出現了一大堆車禍。

我們注意到,當您重新啓動設備並重新安裝應用程序時,崩潰似乎根本沒有發生,在開始的幾分鐘內一切都會好起來,然後您會崩潰。奇怪的是,應用程序之後很容易崩潰。

崩潰主要發生在應用程序的一個特定屏幕上,崩潰似乎不是特定於我們可以告訴的操作。我們連接到第三方API來在屏幕上填充數據,我們正在使用Restkit。崩潰有時似乎來自Restkit。下面是我們得到了一個錯誤日誌的例子:

0 libobjc.A.dylib    0x34f70ca4 objc_msgSend + 28 
1 CoreFoundation     0x325ae0b8 __CFBasicHashStandardRetainValue + 8 
2 CoreFoundation     0x325abb30 __CFBasicHashReplaceValue + 44 
3 CoreFoundation     0x32505f98 CFDictionarySetValue + 68 
4 CoreFoundation     0x3250c94e -[__NSCFDictionary setObject:forKey:] + 54 
5 Foundation      0x34d8a31a -[NSMutableDictionary(NSKeyValueCoding) setValue:forKey:] + 10 
6 nameofapp      0x000ae958 -[RKClient setValue:forHTTPHeaderField:] (RKClient.m:173) 
7 nameofapp      0x000086ae -[WebServer addCustomHeaders:] (WebServer.m:140) 
8 nameofapp      0x000088ea -[WebServer getDoD:objectTarget:] (WebServer.m:197) 

WebServer.m:140 [[objectManager client] setValue:@"text/json" 
           forHTTPHeaderField:@"X-ZFWS-Accept"]; 
+1

這很奇怪。 - [RKClient setValue:forHTTPHeaderField:]僅爲包含所有頭字段的字典調用 - [NSMutableDictionary setValue:forHTTPHeaderField:]。問題仍然存在嗎?你能發佈更多的日誌嗎,比如你的程序崩潰時會發生什麼異常? –

回答

0

兩件事 - 第一,我們需要更多的信息。那個崩潰日誌的其餘部分說的是什麼?其次,同樣重要的是,如果您在iPhone 3G上運行RestKit(或其他任何事情),那麼您必須完全確定對於ARMv6體系結構,將「編譯爲Thumb」轉換爲關閉。我注意到很多我的各種神祕的崩潰消失了,只需確保爲ARMv7打開「爲Thumb編譯」,但是爲ARMv6打開。 iPhone 3G(也可能是iPod)使用不支持Thumb的ARMv6架構。當v6打開Thumb時,不知道它將如何工作(或不工作),因爲芯片的指令越來越差。但是,不要簡單地關閉Thumb,因爲iPhone 4和iPad等新設備會帶來巨大的速度。

在您的Xcode項目中,打開您的編譯設置,然後單擊「編譯爲Thumb」標題,然後從齒輪菜單中選擇「添加編譯設置條件」選項。將「任何SDK」更改爲「任何iOS」,並將「任何體系結構」更改爲「ARMv6」,然後確保「值」未被選中。現在做同樣的事情,爲ARMv7創建另一個構建條件,並選擇/檢查要開啓的值。

在RestKit庫中,您可能必須爲它擁有的各個目標執行此操作。