gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:31:49 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com