Dear Peter,

Thank you for your reply. Here is the requested code (see below). 
After more investigations, I would like to take back a previous statement, that 
the tableview was perfectly aware that the number of rows in the DS was 
changed. This is due to my inexperience in stepping through the code across 
multiple threads.

Here are the facts :

- Only the controller removes rows from the datasource. Either in response to 
user actions (canceling tasks) or as a result of a Task completed notification 
from a running task.
- Each change in the dataSource is immediately followed by a reloadData message 
sent to the TableView.
- Sometimes, randomly, the TableView requests a row index that is out of bounds 
by one index (e.g. row #5 when the dataSource contains only 5 elements).

I am thinking that a redraw occurs in-between the removal of one element of the 
table and the reloadData message. 
For now, I did a quick fix for this issue by adding a category with 
"safeObjectAtIndex"…. But one way to be certain would be to ensure that the two 
messages (removal + reloadData) are sent without any thread/process switching 
occurring…

The code for numberOfRowsInTableView : (experimentList is an instance of 
NSMutableAray)

- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView
{       
        return self.experimentList ? [self.experimentList count] : 0;
}

Jean


On 26 avr. 2012, at 11:45, Peter Hudson wrote:

> 
> Can you post your code for     numberOfRowsInTableView:
> 
> Peter


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to