Objective c 如何更改它以使其返回数组
以下代码工作正常,并显示了正确的输出:Objective c 如何更改它以使其返回数组,objective-c,cocoa,cocoa-touch,nsmutablearray,nsarray,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=
- (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。如何更改此代码以实现此目的?我需要使用此函数在程序的其他部分生成的信息。基本上您有:
在[self expand_combinations]之前在viewDidLoad中创建可变数组。。。
添加传统参数可变数组以扩展_组合
在展开组合中填充数组您需要在代码中更改一些内容 首先,把你的方法的名字改成比Expand组合更清晰和有意义的东西:ARG2:ARG3。 第二,内存泄漏。您不需要设置allocate memory并用字符串s初始化str,因为您可以在循环中立即更改其值,而不释放旧值。 第三,看一看NSMutableArray。在方法的开头,用[NSMutableArray]创建一个数组,在printf的每一行,将字符串添加到数组中。然后返回它。
你似乎有几个这样的问题。也许你应该看看一些关于objective-c的书。有一些参考资料。我已经读过关于objective-c的书。你认为我会在很多关于objective-c的书中找到这个问题的答案吗?我见过的那本书没有谈到这种类型的问题。好吧,是blunt,您的代码存在多个问题,这表明您不熟悉该语言。因此,是的,阅读更多有关Objective-C的内容会对您有所帮助。您仍在这样做……哇!我应该不alloc和init str,还是应该在循环后释放它?awakeFromNib:str是一个变量。您不应该分配和初始化字符串并将其指针分配给该变量是因为您随后立即将另一个字符串的指针指定给该变量,从而浪费和泄漏了第一个字符串。