Ваш widgets
метод доступа должен быть в порядке, хотя вы должны знать, что ни один из объектов в этом массиве не заблокирован. Таким образом, вы можете столкнуться с проблемами, пытаясь одновременно запустить код вроде
[[[myFactory widgets] objectAtIndex:7] setName:@"mildred"];
и
[myTextField setStringValue:[[[myFactory widgets] objectAtIndex:7] name]]; // mildred? or something else?
Поскольку объекты в вашем массиве не заблокированы, вы можете столкнуться с условиями гонки или проблемами типа читателей / писателей. Разве многопоточность не радость?
С другой стороны, для соответствия KVC я бы посоветовал использовать objectInWidgetsAtIndex:
и countOfWidgets
вместо средства доступа widgets
. Помните, KVC моделирует отношения, а не свойства массива. Таким образом, вы должны вызвать что-то вроде [myFactory mutableArrayValueForKey:@"widgets"]
, чтобы получить массив, представляющий свойство widgets
.