2010-08-04 68 views
0

當選擇一個表格單元格時,我將碰到一個EXC_BAD_ADDRESS崩潰,該單元格應該在導航控制器上推送一個新視圖。選擇UITableView單元格時發生奇怪的崩潰

這裏是堆棧跟蹤(在CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION_是永遠存在的):

alt text http://dl.dropbox.com/u/71415/crash_threads.jpg

我強烈懷疑新的代碼我已經添加加載初始數據在一個單獨的線程應用程序的需求,一方面是因爲新視圖控制器的initloadView正在調用並返回正常。我在applicationDidFinishLaunching中執行[NSThread detachNewThreadSelector:@selector(loadData) toTarget:self withObject:nil];,然後加載顯示進度指示器的視圖。當數據準備好時,loadData執行[self performSelectorOnMainThread:@selector(setupMainUI) withObject:nil waitUntilDone:NO];。 UI(表格和全部)加載正常,新的數據顯示很好;只有在推出新視圖時纔會發生崩潰。通過選項卡控制器切換視圖也很好。

想法? 謝謝。

更新

這是我在做什麼來加載新的視圖控制器:

NSArray *arrayForSection = [filteredGobos objectAtIndex:indexPath.section]; 
Employee *selectedEmployee = [arrayForSection objectAtIndex:indexPath.row]; 
if (self.employeeVC == nil) { 
    EmployeeVC *emplVC = [[EmployeeVC alloc] initWithEmployee:selectedEmployee]; 
    self.employeeVC = emplVC; 
} 
[self.navigationController pushViewController:employeeVC animated:YES]; 
+0

顯示您創建並推送新視圖的一些代碼。 EXC_BAD_ADDRESS意味着你正在嘗試訪問不存在的內容。 – lukya 2010-08-04 04:59:52

回答

2

你overreleased的對象。嘗試釋放自動釋放池時,您的應用程序會發出信號。這意味着池中的某些東西已經被釋放和處理過。嘗試構建&分析或NSZombies找到問題。

我不認爲它與你的線程有關,因爲你在那裏提到的想法對我來說看起來是正確的。

+0

就是這樣。不是線程問題。我在新的視圖控制器中發佈了一個自動釋放的數組。 – raheel 2010-08-05 11:57:58