gpt4 book ai didi

objective-c - NSIntegers 的 NSArray 类别的快速枚举

转载 作者:可可西里 更新时间:2023-11-01 03:30:50 24 4
gpt4 key购买 nike

由于我经常使用 NSInteger 数组,我为 NSArray 编写了一个类别(也为 NSMutableArray 编写了一个类别),它添加了诸如 integerAtIndex:、arrayByAddingInteger: 等方法。这些方法负责在 NSNumber 对象中包装/解包 NSInteger .

我想知道是否有一种方法可以增强我的类别,以便我可以对 NSIntegers 进行快速枚举。我希望能够写:

NSArray* arrayOfIntegers;
.
.
.

for(NSInteger nextInteger in arrayOfIntegers)
{
}

……这样“nextInteger”就从幕后的 NSNumber 对象中拉出来了。我可以这样做吗?

最佳答案

我怀疑是否有一种干净的方法可以用 NSFastEnumeration 来做到这一点,因为它在很大程度上取决于 nextObject 方法。

但是,你可以用另一种方式来做,通过为它添加一个 block 方法:

@interface NSArray (Integers)
-(void)eachInteger:(void(^)(NSInteger))block;
@end

@implementation NSArray (Integers)
-(void)eachInteger:(void(^)(NSInteger))block {
for (NSNumber *num in self) {
block(num.integerValue);
}
}
@end

这样,您就可以以类似的方式在您的代码中使用它:

NSArray *arr = [NSArray arrayWithObjects:[NSNumber numberWithInt:23],
[NSNumber numberWithInt:42],
nil];
...
[arr eachInteger:^(NSInteger i) {
NSLog(@"The int is %i", i);
}];
// =>
// The int is 23
// The int is 42

也许您可能想看一下 NSArray categoriesLumumba Framework 上, 这恰好是我写的:D

关于objective-c - NSIntegers 的 NSArray 类别的快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902577/

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