2010-06-27 67 views
1

在所有已更新至iOS4的iPhone(我們選中)上,我們的應用程序的行爲與以前的操作系統版本(3.1.3)不同。首先也是最大的問題是,在3G上(但不是在3GS上),任何UIAlertView凍結了應用程序 - 實際上它看起來應用程序損失集中在UIAlertView,但UIAlertView也沒有得到重點。我必須注意到我的應用程序正在使用OpenGL ES 1.1。iOS4打破我的應用程序

其他錯誤看起來像一些變量獲得不同的初始設置。例如,顏色選擇器與黃顏色開始,而不是黑色,多點觸控計數器給出錯誤的結果,等等。

即使這樣凍結的應用程序:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Please read help before using Facebook/Twitter/Flickr" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil, nil]; 
[alert show]; 
[alert release]; 

任何人有任何想法?

編輯:只是想告訴你,我們修復了所有問題。在仔細檢查我們的代碼並發現我們錯誤的東西時發現了一些麻煩。在iOS3中,相同的錯誤並不明顯,因爲操作系統本身速度更快,但在iOS4中致命的應用程序癱瘓。還有一些變量需要初始化爲默認值(例如 - int x = 0;而不是int x;),然後事情開始按預期工作。

+0

你在UIAlertView中顯示什麼?它是否顯示任何相關的數字?顏色選擇器如何? 我會考慮操作系統以及它如何處理數據類型。 (具體使用不同的數字類型) – Moshe 2010-06-27 20:17:17

+0

即使這會凍結應用程序: UIAlertView * alert = [[UIAlertView alloc] initWithTitle:零消息:@「請在使用Facebook/Twitter/Flickr前閱讀幫助」delegate:self cancelButtonTitle:@「 OK「otherButtonTitles:nil,nil]; [alert show]; [警報發佈]; – duke4e 2010-06-27 20:45:58

+0

你確定你沒有搞亂UIAlertView或其他系統UI元素的內部視圖層次嗎?這種層次結構不保證在操作系統更新和更新之間保持不變,因爲這樣做會在操作系統更新後破壞其他應用程序(這就是Apple強烈不贊同這一點的原因)。 – 2010-06-28 14:58:49

回答

1

儘管聽起來很古怪,但請仔細檢查您的內存管理。隨着框架在主要版本之間的顯着變化,代碼中的任何潛在內存管理問題都可能成爲這種怪異的根源。

+0

是的,但問題是儀器/泄漏仍然不報告任何怪異。 – duke4e 2010-06-27 20:54:52

+0

@ duke4e - 僅僅因爲樂器不能立即顯示出問題並不意味着它不存在。另外,不要只是在泄漏儀器中查找泄漏,請檢查以確保內存監視器中整體內存使用量不會穩步增加,並查找其他奇怪行爲。 – 2010-06-28 14:56:33

1

我會認爲'零'會爲'otherButtonTitles'做這項工作。第二個會導致墜機事件嗎?

如果沒有,崩潰時控制檯上報告的錯誤是什麼?

+0

這是一個非常有效的參數(第二個nil充當列表的標記),事實上,如果您不這樣做,某個新的編譯器會發出警告。 – 2010-06-28 15:00:07

0

我們發現與iOS 3相比,iOS 4更加積極主動地處理內存管理問題。從設計的角度來看,蘋果現​​在不得不擔心大量的應用程序可能在同一時間。我們有大量的內存管理不佳導致的崩潰錯誤,在iOS 3中根本沒有顯示出來。