0

文字列形式の配列にデータを収集していますが、1 つの項目は約 30 文字です。データ収集が終了したら、すべての文字列を 1 つの大きな文字列に結合して、ファイルに書き込みます。文字列の結合は for ループ内で行われ、データ項目の数が 4000 を超えるとデバイスがクラッシュします。原因と修正方法は? 文字列を追加するためのコードは次のとおりです。

NSString *content = @"";

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

3 に答える 3

-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;
}
于 2013-06-03T08:33:14.957 に答える