目标C中的"for in"协议



我有一个保存数据的类。每次提取数据时,我都会调用它的方法,并且一次只提取一个数据。所以我需要一个循环来提取。像这样:

while (dataNumber == 0) {
    id res = [testClass numericFromColumnBy_Cid:columnID];
}

但我希望它支持Objective-C的";在";循环,就像NSArray一样。

for (NSString *str in NSArray) {}; 

我该如何设置?

这是通过NSFastEnumeration完成的。

快速枚举示例,第1部分:

@interface Orchestra : NSObject <NSFastEnumeration>
- (void) addMusician: (Musician *) musician;
@end // Orchestra

并添加所需的方法,该方法只需转身并将参数传递给数组:

- (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *) enumerationState
                                   objects: (id __unsafe_unretained []) buffer
                                     count: (NSUInteger) len {
    return [_members countByEnumeratingWithState: enumerationState
                     objects: buffer
                     count: len];
} // countByEnumeratingWithState

对于好奇的人来说,Mike Ash有一篇精彩的博客文章,他深入研究了NSFastEnumeration的内部结构,提供了NSFast枚举的几个参考实现。

相关内容

  • 没有找到相关文章

最新更新