无法识别的选择器发送到实例(SIG_ABRT),将NSString添加到NSArray

时间:2011-09-22 21:28:28

标签: iphone nsstring

我在这里开心。所以我有一个方法可以查看NSMutableArray,它是另一个类的属性。对象是NSString。在调试器中,我看到它为我正在尝试添加到数组的对象说NSCFString。所以我基本上这样做:

- (NSArray *)GetFileNames {
    NSMutableArray *fileNameArray = [[[NSArray alloc] init] autorelease];
    for (NSString *str in self.ParentVC.SelectedOptions) {
        [fileNameArray addObject:str];
        NSLog(@"%@", str); // this works fine
    }
    return fileNameArray;
}

我在其他地方通过以下方式调用此函数:

    NSArray *fileNameArray = [[NSArray alloc] initWithArray:[self GetFileNames]];

但出于某种原因,我将无法识别的选择器发送到实例,并在此行停止。难道我做错了什么?尝试解决问题的任何提示?我已经检查了self.ParentVC.SelectedOptions,它显示了我想要的NSCFString或NSCFStrings。我可以在仪器上为此做些什么吗?感谢。

2 个答案:

答案 0 :(得分:1)

替换第二行
NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease];

对象的真实类型是您分配的内容,而不是您声明的内容。在发布的代码中,数组不可变。

答案 1 :(得分:1)

这一行:

NSMutableArray *fileNameArray = [[[NSArray alloc] init] autorelease];

应该是

NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease];

否则你正在创建一个不可变数组。