如何更改它以便它返回数组

时间:2010-09-26 09:07:14

标签: objective-c cocoa cocoa-touch nsmutablearray nsarray

以下代码完美运行并显示正确的输出:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self expand_combinations:@"abcd" arg2:@"" arg3:3];
}

-(void) expand_combinations: (NSString *) remaining_string arg2:(NSString *)s arg3:(int) remain_depth
{
    if(remain_depth==0)
    {
        printf("%s\n",[s UTF8String]);
        return;
    }

    NSString *str = [[NSString alloc] initWithString:s];
    for(int k=0; k < [remaining_string length]; ++k)
    {

        str = [s stringByAppendingString:[[remaining_string substringFromIndex:k] substringToIndex:1]];
        [self expand_combinations:[remaining_string substringFromIndex:k+1] arg2:str arg3:remain_depth - 1];

    }
    return;
}

但是,我想将它们返回给NSArray,而不是输出结果。如何更改此代码呢?我需要使用此函数在程序的其他部分生成的信息。

2 个答案:

答案 0 :(得分:3)

您需要在代码中更改一些内容。

  • 首先 - 考虑将您的方法名称更改为比-expand_combinations:arg2:arg3更清晰,更有意义的内容。
  • 第二次 - 您有内存泄漏。您不需要设置分配内存并使用字符串str初始化s,因为您在循环中立即更改其值而不释放旧值。
  • 第三次 - 查看NSMutableArray。在方法的开头,创建一个带有[NSMutableArray array]的数组,并在每行printf处,将字符串添加到数组中。然后归还。

答案 1 :(得分:2)

基本上你有:
viewDidLoad之前[self expand_combinations ...创建可变数组 将附加参数(可变数组)添加到expand_combinations
填充expand_combinations

中的数组