1

我很确定这与componentsJoinedByString 给我的 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;
}

谢谢你的帮助。

4

1 回答 1

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. 使用“构建和分析”选项让静态分析器检查任何问题。这对 ARC 来说不是问题,但它仍然会处理诸如使用未初始化值之类的问题。

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

于 2013-01-15T12:29:30.327 回答