componentsJoinedByString导致EXC_BAD_ACCESS崩溃

时间:2013-01-14 16:46:10

标签: objective-c xcode macos

我很确定这与componentsJoinedByString gives me 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 个答案:

答案 0 :(得分: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& amp;分析“让静态分析仪检查任何问题的选项。这不是ARC的一个问题,但它仍会采用诸如使用未初始化值之类的东西。

  3. 确保您已从任何Core Foundation对象中正确桥接所有权。