2011-11-16 58 views
9

這裏是我的代碼:UIAlertView中創建EXC_BAD_ACCESS

#ifdef DEBUG 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ERROR" message:@"JSON Parsing Error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
#endif 

此代碼是在後臺線程(負責解析)執行,並且錯誤僅發生每隔時間。任何想法在這裏有什麼問題?

回答

17

不要從後臺線程中弄亂UI。創建一個方法並在主線程上調用該方法:

[someObject performSelectorOnMainThread:@selector(showDebug:) 
          withObject:@"JSON Parsing Error" 
          waitUntilDone:YES]; 
+0

完美的答案,因爲我在的iOS 6.0的問題,其解決了 –

2

您不應該在單獨的線程中執行UI代碼。

如果您的應用程序有一個圖形用戶界面,建議您收到用戶有關的活動,並開始從應用程序的主線程界面更新 。此方法有助於避免與處理用戶事件和繪圖窗口內容相關的同步問題。一些框架,比如Cocoa,通常需要這種行爲,但即使對於那些不這樣做的行爲,在主線程上保持這種行爲也具有簡化用於管理用戶界面的邏輯 的優勢。

Threads and Your User Interface