iphone - iOS —将方法映射到数组

标签 iphone objective-c arrays ios map

在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/

相关文章:

iphone - 什么时候调用 dealloc 方法?

iphone - 使用AVAudioPlayer播放的音频在iPhone模拟器中有效,但在设备中不起作用

objective-c - Objective C 中作为 NSData 的 writeValue 数据与 Swift 中的数据之间的区别

objective-c - 如何在 iOS 中使用 UISearchBar 从 sqlite 中搜索数据?

java - 在java中无法将数组作为参数传递

python - 将 2D numpy 数组转换为 2D numpy 矩阵

iphone - 内存泄漏警告

ios - 是否可以在 iOS 上禁用 WiFi 和 3G

ios - 使用 block 将数据传回 View Controller

php - 如何获取数组中不重复的元素?