1
我有一個id<NSFastEnumeration>
對象。我想計算對象內的元素。這怎麼能實現?內部計數元素id <NSFastEnumeration>
的唯一方法NSFastEnumeration工具是:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len
這個方法返回我要找的計數,但我並不想真正枚舉我不知道的對象,有什麼我可以安全地傳遞作爲參數。是否可以通過零,零,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];
代替。
謝謝你的回答。我知道容量只是一個暗示,但後來我好奇,想知道。我將堅持'NSMutableArray * results = [NSMutableArray array];'然後。 – tonklon 2010-08-04 09:09:40
*當然這意味着枚舉器將被耗盡,並且不能再循環。*是否?我無法在文檔中的任何地方找到它是真實的。 – JeremyP 2010-08-04 12:49:23
@Jeremy:看看採用NSFastEnumeration的NSEnumerator。 – kennytm 2010-08-04 13:25:31