2013-01-14 122 views
1

我敢肯定这是eactly同样的问题在componentsJoinedByString gives me EXC_BAD_ACCESScomponentsJoinedByString导致崩溃与EXC_BAD_ACCESS

基本上,一个数组使用此代码填充,与ARC打开:

-(NSMutableArray *)getArrayOfCommaSeparatedSelectorStrings{ 
    NSMutableArray *Array = [[NSMutableArray alloc] init]; 
    for(NSMutableArray *e in [self getArrayOfSelectorArrays]) { 
     [Array addObject:[displayCSSInformation returnArrayAsCommaList:e]]; 
    } 
     return Array; 
} 

,然后displayCSSInformation尝试用此方法返回逗号分隔列表:

+(NSString *)returnArrayAsCommaList:(NSMutableArray *)ToBeConverted{ 
    NSString *test = [ToBeConverted componentsJoinedByString:@", "]; 
    return test; 
} 

感谢您的帮助。

+1

您是否设置了异常断点来查看崩溃发生的位置? – Fogmeister

+0

您使用ARC吗? – Tim

+0

对于这两者都是。异常发生在componentsJoinedByString发生的地方。 – neutrino

回答

0

如果所有方法都调用另一个方法,通常不需要使用单独的方法。删除您的+returnArrayAsCommaList:方法,并直接在阵列上使用componentsJoinedByString:

- (NSMutableArray *) getArrayOfCommaSeparatedSelectorStrings 
{ 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    for (NSMutableArray *e in [self getArrayOfSelectorArrays]) 
     [array addObject:[e componentsJoinedByString:@", "]]; 

    return array; 
} 

上述应工作(它在我的小测试的例子),如果你仍然得到错误:

  1. 确保getArrayOfSelectorArrays真的返回字符串数组的数组。将输出记录到控制台或使用调试器逐步完成。

  2. 使用“ Build &分析”选项可让静态分析器检查是否存在任何问题。这对ARC而言不是什么问题,但它仍然会采用诸如使用未初始化值的方式。

  3. 确保您已正确桥接来自任何Core Foundation对象的所有权。