2010-06-10 73 views
0

我遇到了同樣的問題:Crashing while trying to move UITableView rows desciped! 我想要做的就是在特定的重排操作中插入一個新的單元格或刪除所選的單元格。重新排列一個uitableview

有時候我:

*********在斷言失敗 - [_ UITableViewUpdateSupport _setupAnimationForReorderingRow],/SourceCache/UIKit/UIKit-963.10/UITableViewSupport.m:295嘗試 創建兩個動畫細胞異常

,當我想通過調用[self.tableView reloadData] 重裝我的數據,我得到:

**********終止應用程序由於未捕獲的異常 'NSRangeException',原因: '*** - [NSCFArray objectAtIndex:]:索引(0)超過界限(0)'

有誰知道如何處理這個問題?

+0

同樣的問題... 。?沒有代碼很難說。也許使用調試器並查看崩潰的堆棧跟蹤。可以是從傳送單元到內存管理不當的任何事情。 – Eiko 2010-06-10 13:45:56

回答

1

再來一次!

感謝您的幫助! 我確實爲我的問題找到了解決方案!

我不在乎編輯時動畫tableview! 我終於找到這篇文章的解決方案:How to stop UITableView moveRowAtIndexPath from leaving blank rows upon reordering

湯姆·薩克斯頓說:

// APPLE_BUG:如果你移動到某一行這是離屏的小區(因爲目標 //一直修改),僞造的細胞被創建,最終會導致崩潰

所以我的代碼如下所示:

}

- (void)delayedReloadData:(UITableView *)tableView { 
//Assert(tableView == self.tableView); 
[self.tableView reloadData]; 

}

我也有我的initData方法MEM泄漏,這是我解決這樣的:

-(void) initData { 
if (!self.data) { 
    self.data = [[NSMutableArray alloc] init]; 
} 
else { 
    [self.data removeAllObjects]; 
} 

[self.data addObjectsFromArray:[self.fetchedResultsController fetchedObjects]]; 

}

感謝您的幫助!

Nikolay

0

在initData中仍然存在mem泄漏。我假設你將數據定義爲「@property(nonatomic,retain)NSMutableArray * data」。所以當你調用alloc/init時,保留計數是1,然後你賦值給self.data,它會保留,給它一個2的計數。你需要做的:

NSMutableArray *ary = [[NSMutableArray alloc] init]; 
self.data = ary; 
[ary release]; 
+0

好的,非常感謝!我會考慮的。 – Nicolay 2010-07-05 09:36:14