我有这种方法,它有点大,所以我不能在这篇文章中包含它。它将数组作为参数并测试其对象(NSStrings)。有时 - 但不总是 - ,该方法使用包含其中一个字符串的数组调用自身。如果每个测试都通过,那么NSString将被发送到另一个处理它的方法。这一切都很好,但现在我正在采用不同的方法。我想调用该方法,让它返回一个成功通过测试的所有NSStrings的数组。但由于该方法自称,我真的不知道如何做到这一点。我可以将所有成功测试的NSStrings添加到一个数组中,而不是处理它,但是那个数组需要在所有方法中都可以访问。这里推荐什么?我想避免公开变量..
- (void)doStuff: (NSArray *)array { //A quick (very short) example of what I have now.
for (NSString *string in array) {
if ([string isEqualToString: @"test"])
[self doStuff: [NSArray arrayWithObject: @"test2"]];
else
[self processStuff: string];
}
}
答案 0 :(得分:2)
您可以添加一个可变数组作为其参数之一,并在其中添加结果:
- (void)doRecursiveWithData:(NSArray *)array storeResultsIn:(NSMutableArray *)results {
if ( shoudGoDeeper )
[self doRecursiveWithData:(your new array)];
else
[results addObject:(whatever you want to store)]; // or use another method to so so
}
我知道你的例子只是一个例子,但也许值得思考如何在没有递归的情况下离开 - 在许多方面,这很容易实现并且通常表现得更好。