在iOS中是否有更简洁的方法来执行以下操作?
假设我们有:
NSArray *existingArray;
而且我们的对象self拥有一个someMethod方法,该方法可以将existingArray中的对象作为输入并返回Foo类的对象。我们可以通过将someMethod应用于现存数组中的对象来创建一个新数组* derivedArray,如下所示:
NSMutableArray *derivedArray = [[NSMutableArray alloc]init];
for (id obj in existingArray) {
[derivedArray addObject: [self someMethod: obj]];
}
我的问题是,有没有更简洁的方法?就像是:
NSArray *derivedArray = [existingArray arrayByMappingMethod: someMethod withObject: self];
最佳答案
否。有一个makeObjectsPerformSelector:
方法(以及其他一些相关方法),但是没有一个方法允许您从调用中获得结果。当然,您可以将您的方法添加为NSArray上的类别,但是Apple尚未提供执行此操作的方法。
在性能改进方面,变化
[[NSMutableArray alloc] init];
至
[[NSMutableArray alloc] initWithCapacity:[existingArray count]];
这将允许数组一次为所有对象分配内存,而不是每次添加对象时都重新分配。
关于iphone - iOS —将方法映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5439760/