У меня есть id<NSFastEnumeration>
объект. Я хочу посчитать элементы внутри объекта. Как этого достичь?
Единственный метод, который реализует NSFastEnumeration:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len
Этот метод возвращает количество, которое я ищу, но поскольку я не хочу действительно перечислять объекты, которые мне интересно, что я мог бы безопасно передать в качестве аргументов. Можно ли просто передать nil, nil, 0? Если нет, что я должен пройти?
Фон:
Я хочу создать NSArray возвращаемых значений функции, которую я хочу вызывать с каждым элементом в данной коллекции. Мне нужен массив результатов перечисления коллекции с помощью функции.
id<NSFastEnumeration> enumeratable = someObject;
NSMutableArray* results = [NSMutableArray arrayWithCapacity:(#Fill in count here#)];
for (id object in enumeratable) {
[results addObject:callFunctionOnObject(object)];
}
Как видите, мне нужен только счетчик для оптимизации инициализации массива. Я прекрасно понимаю, что мог бы использовать вместо этого NSMutableArray* results = [NSMutableArray array];
.