Доступ к изменяемой коллекции Cocoa Threadsafe

Я создаю изменяемый массив, совместимый с KVC / KVO, на одном из моих объектов:

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

Очевидно, что это сложная проблема с безопасностью потоков. вinsert а такжеremove методы я блокирую доступ к массиву, чтобы предотвратить одновременную модификацию, какрекомендуемые.

Мой вопрос заключается в том, как правильно реализоватьwidgets аксесс? Вот моя реализация:

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

Это потокобезопасно?

Ответы на вопрос(3)

Ваш ответ на вопрос