加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 04:55:28 所属栏目:百科 来源:网络整理
导读:由于我经常使用NSInteger数组,我为NSArray编写了一个类别(也是NSMutableArray的一个类别),它添加了诸如integerAtIndex:,arrayByAddingInteger:等方法.这些方法负责在NSNumber对象中包装/解包NSInteger. 我想知道的是,是否有一种方法可以增强我的类别,以便
由于我经常使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读