Hi all, I have problem with a NSTableView bound to an NSArrayController bound 
to an NSMutableArray in my controller class.

After the following sequence I get a crash:

1) start application
2) request download of data
3) populate data into mutable array 
4) show the view
5) ask for another download
6) removeobjects from the array 
7)add new objects to array

I get the following crash on the remove:

2010-01-18 23:59:44.614 xxx[8944:5537] An uncaught exception was raised
2010-01-18 23:59:44.615 xxx[8944:5537] *** Collection <NSConcreteHashTable: 
0x2003e53a0> was mutated while being enumerated.NSHashTable (%@) {

}
'
*** Call stack at first throw:
(
        0   CoreFoundation                      0x00007fff85b48444 
__exceptionPreprocess + 180
        1   libobjc.A.dylib                     0x00007fff849cf0f3 
objc_exception_throw + 45
        2   CoreFoundation                      0x00007fff85b9f66f 
__NSFastEnumerationMutationHandler + 303
        3   Foundation                          0x00007fff81684839 
-[NSConcreteHashTable countByEnumeratingWithState:objects:count:] + 78
        4   AppKit                              0x00007fff832891fb 
-[_NSModelObservingTracker clearAllModelObjectObserving] + 308
        5   AppKit                              0x00007fff83363c2f 
-[_NSModelObservingTracker 
setIndexReferenceModelObjectArray:clearAllModelObjectObserving:] + 42
        6   AppKit                              0x00007fff834043c0 
-[NSTableBinder _updateContent] + 89
        7   AppKit                              0x00007fff83404280 
-[NSTableBinder _observeValueForKeyPath:ofObject:context:] + 91
        8   AppKit                              0x00007fff83404093 
-[NSTableBinder observeValueForKeyPath:ofObject:change:context:] + 68
        9   Foundation                          0x00007fff8168718d 
-[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath:change:] + 991
        10  AppKit                              0x00007fff83286132 
-[NSController _notifyObserversForKeyPath:change:] + 218
        11  AppKit                              0x00007fff8338fceb 
-[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:] + 63
        12  AppKit                              0x00007fff8336417b 
-[NSArrayController setContent:] + 899
        13  AppKit                              0x00007fff83402129 
-[NSArrayDetailBinder _refreshDetailContentInBackground:] + 1301
        14  Foundation                          0x00007fff81680d8e 
NSKeyValueDidChange + 458
        15  Foundation                          0x00007fff817531b5 
-[NSObject(NSKeyValueObserverNotification) didChange:valuesAtIndexes:forKey:] + 
134
        16  Foundation                          0x00007fff8174bbc9 
-[NSKeyValueNotifyingMutableArray removeObjectAtIndex:] + 170
        17  CoreFoundation                      0x00007fff85b54b2e 
-[NSMutableArray removeAllObjects] + 62
        18  VATSpy                              0x000000010000ed01 
-[BBSControllersViewController loadValues] + 282
        19  VATSpy                              0x000000010000e12f 
-[BBSMainWindowController loadComplete:] + 695
        20  VATSpy                              0x0000000100004912 -[BBSDataMgr 
loadDataFile:] + 3851
        21  Foundation                          0x00007fff8166de99 
__NSThread__main__ + 1429
        22  libSystem.B.dylib                   0x00007fff814c2f8e 
_pthread_start + 331
        23  libSystem.B.dylib                   0x00007fff814c2e41 thread_start 
+ 13
)
Code is:

        BBSDataMgr *mgr = [BBSDataMgr sharedManager];
        @try {
                if ([mgr clientControllers] != nil) {
                        [[mgr updateLock] lock];
                        NSArray *arr = [[mgr clientControllers] allValues];
        
                        if ([controllers count] >0])
                                [[[self mutableArrayValueForKey:@"controllers"] 
removeAllObjects];

                        [[self mutableArrayValueForKey:@"controllers"] 
addObjectsFromArray:arr];

                        [myTableView reloadData];
                }
        }
        @finally {
                [[mgr updateLock] unlock];
        }


Grant




_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to