1

假设我们有一个 Mac 应用程序,其中有一个 NSTableView(从 NSTableView 继承的 DownloadTableView 和从 NSActionCell 继承的 DownloadCell 以显示进度条和与项目相关的所有信息)。在我的应用程序控制器中,我有一个 NSMutableArray 来保存将在 tableView 中显示的对象(下载)。目前我在控制器中还有一个计时器,它[[self tableView] reloadData]每秒都会显示每个对象的进度(下载)。

我不认为这是刷新 tableView 的最佳方式,因为当我尝试从 mutableArray 中删除一个元素时,我经常会遇到竞争条件(因此会出现异常)。例如,视图当前正在刷新,我从数组中删除了一个元素。应用程序可能会在内部抱怨- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row,[downloadCell setRepresentedObject:download] 下载可能不再在数组中,因此会出现超出数组范围的异常。或者,如果我拖放元素,有时需要将对象删除并重新添加到数组中。

有人对这个主题有更好的想法吗?

4

0 回答 0