我正在实现一个应用程序,其中类的实例以及类本身都有“子级”(放置在 NSMutableArray
中)。这是一个相当复杂的应用程序,但多亏了 Objective-C,它变得轻而易举:类本身就是对象并且可以有方法和“变量”(在静态变量等的帮助下)。
为了方便自己,我在我的实例(使用-
)和类(使用+
)上实现了访问器/ setter 方法来获取和操作“ child ” "而无需直接访问数组。我喜欢尽可能关闭我的对象,并且方法会进行一些数据验证。
我还从NSFastEnumeration
协议(protocol)中实现了一个快速枚举实例 方法。问题来了:我能否实现一个快速枚举 class 方法并将其与 Objective-C 的 for...in
构造一起使用?换句话说,我可以实现这个吗:
+ (NSUInteger)countByEnumeratingWithState: (NSFastEnumerationState *)state objects: (__unsafe_unretained id [])buffer count: (NSUInteger)len;
然后在类似的地方使用它:
for (id child in [MyClass class]) {
// Do magic stuff…
}
我查看了 GNUStep 的 GSFastEnumeration.h
文件,它以宏的形式实现了快速枚举,证实了上述是可能的,但我不确定 Apple 是否也这样做。
即使我不能将 NSFastEnumeration
协议(protocol)关联到我的类对象,没有该协议(protocol)的快速枚举是否可能(并且面向 future )?
最佳答案
-countByEnumeratingWithState:objects:count:
方法是整个快速枚举——协议(protocol),我相信,主要是为了描述(实现协议(protocol)比用正确的签名)。我希望它能正常工作,但我没有这方面的引用。不过,您可能希望遍历 [MyClass class]
。
我可能认为它是面向 future 的。请注意,围绕您的类对象创建一个小包装类真的很简单,它除了实现 NSFastEnumeration
并转发实例方法 -countByEnumeratingWithState:objects:count:
到您类(class)的方法 +countByEnumeratingWithState:objects:count:
。
关于objective-c - 类对象的快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110974/