Cocoa Threadsafe Mutable Collection Access

Ich erstelle auf die empfohlene Weise ein KVC / KVO-kompatibles veränderbares Array für eines meiner Objekte:

@interface Factory {
    NSMutableArray *widgets;
}
- (NSArray *)widgets;
- (void)insertObject:(id)obj inWidgetsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromWidgetsAtIndex:(NSUInteger)idx;
@end

Clearly das ist ein kniffliges Thread-Sicherheitsproblem. In deminsert undremove Methoden, die ich um den Array-Zugriff sperre, um gleichzeitige Änderungen zu verhindern, wieempfohle.

Meine Frage ist, was ist der richtige Weg, um die @ zu implementierwidgets accessor? Hier ist meine Implementierung:

- (NSArray *)widgets {
    [widgetLock lock];
    NSArray *a = [[widgets copy] autorelease];
    [widgetLock unlock];
    return a;
}

Ist es threadsicher?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage