objective-c - 类对象的快速枚举

标签 objective-c oop class foundation fast-enumeration

我正在实现一个应用程序,其中类的实例以及类本身都有“子级”(放置在 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/

相关文章:

objective-c - 如何为 Mac App 创建辅助应用程序以在用户登录时启动它?

iphone - Objective c - NSMutableSet 独特的对象属性

java - 重写 hashCode() 方法

ruby-on-rails - 检索类和类实例的 "kind"

Python - self ,没有 self 和 cls

ios - 核心数据提取在第二次使用谓词时返回 0 个结果

iphone - 是否可以在保持scrollsToTop功能的同时用 View 覆盖UIStatusBar?

java - Comparable 和 Comparator 的区别?

c# - 使用什么样的数据结构?

python - 我的函数如何知道它正在接收什么类?