注意:解释起来相当复杂。请在这一个裸露与我。快速枚举类对象
大家嗨,
我执行的应用程序,其中一类的两个实例以及类本身有“孩子”(放在里面NSMutableArray
)。这是一个相当复杂的应用程序,但是感谢Objective-C,它很容易:类本身就是对象,可以有方法和“变量”(借助于静态变量等)。为了让自己变得容易,我对两个实例(使用-
)和类(使用+
)实施accessor/setter方法来获取和操作“子”,而无需直接访问数组。我喜欢尽可能地关闭我的对象,并且这些方法会进行一些数据验证。
我也从NSFastEnumeration
协议实现了快速枚举实例方法。问题来了:我可以实现一个快速枚举类方法并将其与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
文件,实现快速列举宏,其中申明上面是偷看可能,但我不确定苹果是否也这样做。
即使我不能将NSFastEnumeration
协议与我的类对象相关联,是否可以快速枚举而不使用该协议(以及未来验证)?
谢谢。
它确实工作,但我想知道它是否能够适应未来。但就像你说的,即使不符合协议,它可能是好的...并且会保持如此。 –