Acesso à coleção mutável Threadsafe de cacau
Estou criando um array mutável compatível com KVC / KVO em um dos meus objetos da maneira recomendada:
@interface Factory {
NSMutableArray *widgets;
}
- (NSArray *)widgets;
- (void)insertObject:(id)obj inWidgetsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromWidgetsAtIndex:(NSUInteger)idx;
@end
Claramente, esse é um problema complicado de segurança de threads. Noinsert
eremove
métodos, estou bloqueando o acesso ao array para impedir modificações simultâneas, comorecomendado.
Minha pergunta é: qual é a maneira correta de implementar owidgets
assessor? Aqui está minha implementação:
- (NSArray *)widgets {
[widgetLock lock];
NSArray *a = [[widgets copy] autorelease];
[widgetLock unlock];
return a;
}
É thread-safe?