2012-07-24 79 views
1

我一直工作在一個應用程序的月數的現在和奇怪的錯誤已經出現在過去的兩個星期。在延長使用應用程序(20-30分鐘)之後,我們的許多自定義標籤(基於UILabel)停止正確渲染(有些只會顯示空白)。有趣的是,在這種情況下,造就了鍵盤顯示如下:iPad的鍵盤渲染 - 缺字母/鍵

enter image description here

我已經嘗試了一些調整過與無濟於事代碼庫的各個部分的最後幾個星期,我希望,這裏的某個人在遇到過類似的問題之前可能會遇到困難,並且/或者可能會在哪裏尋找解決方案。

我們正在利用我們的自定義標籤內大量的CoreGraphics中調用render一些相當複雜的註解字符串,並有交通在另一個線程在後臺來回到服務器的相當數量。關於內存,我們正在使用ARC,同時我們在任何時候都在內存中保留了大約5-10Mb的原始數據 - 我無法想象其他任何東西都在咀嚼大量內存。

上哪裏找將不勝感激任何意見。

回答

2

哦,不是這個確切的問題,但類似的真正怪異的東西,在一個窗口中可見。它被追蹤到從主線程以外的消息傳遞UIKit。我們最後添加了很多很多「assert([NSThread isMainThread]);」在我們認爲可能在屏幕上繪畫的地方,果然,我們找到了罪惡派對。

+0

+1用於突出顯示UI調用需要位於主線程上。 – Cthutu 2012-07-24 17:13:54

+0

非常感謝指針,我今天會調查一下,看看我們的任何網絡或其他線程代碼是否可能調用任何UIKit方法!這樣一個奇怪的錯誤! – 2012-07-25 09:23:12

+1

當你發現問題,請讓我們知道它是什麼! – 2012-07-25 11:31:44

2

在不同的線程使UI調用的問題,我想我可能添加的這段代碼展示一個不同的線程如何使UI電話。

dispatch_sync(dispatch_get_main_queue(), ^{ 
    // Put your UI code here 
}); 

這將確保您的代碼在運行循環處理期間在主線程上運行。