在for循环中追加一个字符串会使ios设备崩溃

时间:2013-06-03 08:08:58

标签: ios string crash

我正在以字符串格式将数据收集到数组中,一个项目大约30个字符。当数据收集完成后,我尝试将所有字符串组合成一个大字符串,然后将其写入文件。组合字符串是在for循环中完成的,当数据项的数量超过4000时,它会导致设备崩溃。是什么导致它以及如何修复?这是我附加字符串的代码:

NSString *content = @"";

for (int i=0; i<self.log.count; i++)
{
    content = [[content stringByAppendingString:@""] stringByAppendingString:(self.log)[i]];
}

3 个答案:

答案 0 :(得分:3)

如果您尝试将数组转换为字符串,则可以使用更简单的方法:

NSString *content = [self.log componentsJoinedByString:@" "];

答案 1 :(得分:-1)

试试这个......

NSString *content = @"";

for (int i=0; i<self.log.count; i++)
{
    content = [[content stringByAppendingString:@""] stringByAppendingString:[NSString stringWithFormat:@"%@",(self.log)[i]]];
}

答案 2 :(得分:-1)

为了确保分配所需的内存量,我建议你使用一个带有init的可变字符串来获取所需的长度。

-(NSString*)concantString:(NSArray *)incomingLog {
    int calculatedLength = 0;
    for (int i=0; i < [incomingLog count]; i++)
    {
        calculatedLength += [incomingLog[i] length];
    }

    NSMutableString *content = [[NSMutableString alloc] initWithCapacity:calculatedLength];
    for (int i=0; i < [incomingLog count]; i++)
    {
        content = (NSMutableString*)[[content stringByAppendingString:@""] stringByAppendingString:incomingLog[i] ] ;
    }
    return content;
}