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

前端之家收集整理的这篇文章主要介绍了objective-c – NSIntegers的NSArray类别的快速枚举前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于我经常使用NSInteger数组,我为NSArray编写了一个类别(也是NSMutableArray的一个类别),它添加了诸如integerAtIndex:,arrayByAddingInteger:等方法.这些方法负责在NSNumber对象中包装/解包NSInteger.

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

NSArray* arrayOfIntegers;
    .
    .
    .

for(NSInteger nextInteger in arrayOfIntegers)
    {
    }

….然后,“nextInteger”被拉出幕后的NSNumber对象.我可以这样做吗?

解决方法

我怀疑使用NSFastEnumeration有一个干净的方法,因为它在很大程度上取决于nextObject方法.

但是,您可以通过为其添加方法以另一种方式执行此操作:

@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

也许你可能想看看Lumumba Framework上的NSArray categories,这恰好是我写的:D

原文链接:https://www.f2er.com/c/120116.html

猜你在找的C&C++相关文章