使用NSArray的makeObjectsPerformSelector来产生副作用

Mat*_*lly 0 side-effects objective-c nsarray

我在Objective-C程序中有一个FoA的NSArray.我想调用每个Foo的doIt函数,但是,根据文档,NSArray的makeObjectsPerformSelector函数不允许修改原始Foos .当调用doIt时,doIt选择器为每个Foo更改m数据成员.如何在NSArray中的每个Foo上有效地执行此功能?

@interface Foo : NSObject {
    NSString *m;
}

@property (nonatomic, retain) NSString *m;

-(void)doIt;

@end
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 6

您可以修改原始Foos,而不是数组本身.正如您在文档中链接的那样:

该方法不能采用任何参数,并且不得具有修改接收数组的副作用.

祝好运!