我在这里开心。所以我有一个方法可以查看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。我可以在仪器上为此做些什么吗?感谢。
答案 0 :(得分:1)
用
替换第二行NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease];
对象的真实类型是您分配的内容,而不是您声明的内容。在发布的代码中,数组不可变。
答案 1 :(得分:1)
这一行:
NSMutableArray *fileNameArray = [[[NSArray alloc] init] autorelease];
应该是
NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease];
否则你正在创建一个不可变数组。