Ich erstelle ein KVC/KVO-kompatibles veränderbares Array auf einem meiner Objekte auf die empfohlene Weise:
@interface Factory {
NSMutableArray *widgets;
}
- (NSArray *)widgets;
- (void)insertObject:(id)obj inWidgetsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromWidgetsAtIndex:(NSUInteger)idx;
@end
Es handelt sich hier eindeutig um ein heikles Problem der Thread-Sicherheit. In der insert
y remove
Methoden sperre ich den Array-Zugriff, um gleichzeitige Änderungen zu verhindern, da empfohlen .
Meine Frage ist, wie man die widgets
accessor? Hier ist meine Implementierung:
- (NSArray *)widgets {
[widgetLock lock];
NSArray *a = [[widgets copy] autorelease];
[widgetLock unlock];
return a;
}
Ist es thread-sicher?