0

iPhone アプリでメモリの問題が発生し、苦労しています。これが私が得るエラーメッセージです:

malloc: * mmap(size=9281536) に失敗しました (エラー コード = 12) *エラー: 領域を割り当てられません

有用な情報である可能性がある場合に備えて、このアプリには ARC を使用しています。コード (以下) は、コア データ エンティティをロードするためにバンドル内のファイルを使用しているだけです。

奇妙なことに、クラッシュは 90 回以上ループした後にのみ発生します。「コンテンツ」のサイズがどんどん小さくなるので、メモリ要求もどんどん小さくなるはずです。

これがコードです。誰かが欠陥を見ることができれば、私に知らせてください。

NSString *path,*contents,*lineBuffer;
path=[[NSBundle mainBundle] pathForResource:@"myFileName" ofType:@"txt"];
contents=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

int counter=0;

while (counter<10000) {
    lineBuffer=[contents substringToIndex:[contents rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location];
    contents=[contents substringFromIndex:[lineBuffer length]+1];
    newItem=[NSEntityDescription insertNewObjectForEntityForName:@"myEntityName"
                                                      inManagedObjectContext:context];
    [newItem setValue:lineBuffer forKey:@"name"];

    request=[[NSFetchRequest alloc] init];
    [request setEntity: [NSEntityDescription entityForName:@"myEntityName"
                         inManagedObjectContext:context]];
    error=nil;
    [context save:&error];

    counter++;
}
4

1 に答える 1

1

コンテンツにNSStringの代わりにNSMutableStringを使用して、最終的に問題を解決しました。そして、次を使用します:[contents deleteCharactersInRange:range]; もちろん、範囲を適切に維持します。ループ内。

于 2012-10-17T04:59:14.793 に答える