2011-02-15 83 views
1

我正在研究從相機讀取圖像(幀)的應用程序,對圖像執行一些處理,然後在UI中顯示結果。來自攝像頭的幀進入一個委託,在另一個線程中調用(即不是主線程),我在該線程中執行所有圖像處理工作,並執行performSelectorOnMainThread:完成圖像時。UIImage和多線程

問題是,在處理之前和之後,我將圖像轉換爲/從內部格式轉換。對於那些使用CGContext的轉換。由於我得到了一些奇怪的EXC_BAD_ACCESS,我開始懷疑在main之外的任何線程中是否有使用CGContext的問題。

我應該只是調用performSelectorOnMainThread:只要我得到框架(相機API將已經調用我的委託在另一個線程),並做主線程上的一切?或者CGContext在多線程中很好,這個bug可能是其他的東西?

另一個可能導致問題的問題是:UIImage是在處理線程中創建的,然後在主線程中使用(並隨後發佈)。這可能會導致任何與Autorealease池相關的問題?

+0

你使用什麼樣的CGContext? – tadejsv 2011-02-15 21:52:18

回答

0

問題在於從內部格式轉換爲UIImage,而不是在多線程中,可以在後臺線程中使用CGContext。請注意,有一些UIImage經常使用的函數不是線程安全的,比如UIGraphicsBeginImageContext()。