componentsJoinedByString给我EXC_BAD_ACCESS

问题描述:

我有一个NSMutableArray我想转换成一个字符串。
声明我的NSMutableArray ...componentsJoinedByString给我EXC_BAD_ACCESS

NSMutableArray *listData; 

后来的方法中...

NSString *foo = [listData componentsJoinedByString:@"|"]; 
NSLog(@"%@",foo); 

似乎无论什么我尝试我不断收到EXC_BAD_ACCESS。
为了确保每个元素在我的数组是一个NSString我也试过这个...

NSMutableArray *mArray = [[NSMutableArray alloc] init]; 
for (id ln in listData) { 
    NSString *boo = [NSString stringWithFormat: @"%@",ln]; 
    [mArray addObject:boo]; 
} 
NSString *foo = [mArray componentsJoinedByString:@"|"]; 
NSLog(@"%@",foo); 

我可以通过添加/删除在我的班级里同样的方法或其他方法操纵对象我的NSMutableArray。但是,当我尝试“componentsJoinedByString”弹出错误。有没有人有任何建议或另一种方式,我可以将此数组合并成一个NSString?

+1

如何/你在哪里创建和填充`listData`? – paulbailey 2010-11-30 15:29:21

+0

在我的类头文件中我声明属性listData。 @property(nonatomic,retain)NSMutableArray * listData;在我的.m文件中,我将它合成并释放它。我通过另一个称为loadList的方法来填充列表,该方法从存储的plist文件获取数据。 “NSMutableArray * tmpList = [[NSMutableArray alloc] initWithContentsOfFile:filePath]; return tmpList;” – 2010-11-30 15:32:22

在您提供的代码中,listData永远不会有NSMutableArray。在你的代码中的某个时刻,你需要创建一个,并且可能会填充它。

编辑 好了,你可能会进入内存管理的问题在这里,让我们可以更清楚一点:

你合成的getter和setter的实例变量,所以它的使用这些好的做法访问它,他们会照顾保留和适当释放。

要设置listData,你可以简单地使用

self.listData = [listManage getList:[[NSUserDefaults standardUserDefaults] stringForKey:@"list_name"] list:@"LIST"]; 

[self setListData:[listManage getList:[[NSUserDefaults standardUserDefaults] stringForKey:@"list_name"] list:@"LIST"]]; 

如果你喜欢。