1

別のスレッドで次のコードを使用して、アプリのディレクトリに画像を書き込んでいます

for (int j =0; j<[sorted count]; j++) {
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[sorted objectAtIndex:j]]];
    UIImage *image = [UIImage imageWithData:data];
    if (image!=nil) {
        NSLog(@"%@",[sorted objectAtIndex:j]);
        [images addObject:image];
    }
}

for (int k=0;k<[images count];k++)
{
    NSString *temp = [[sorted objectAtIndex:k]lastPathComponent];
    NSString *imagePath = [dataPath stringByAppendingPathComponent:temp];
    NSData *data = UIImageJPEGRepresentation([images objectAtIndex:k], 1.0f);
    [data writeToFile:imagePath atomically:YES];

}

しかし、奇妙なことに、最後の 2 つのイメージが書き込まれていません。すべてを試しましたが、うまくいかないようです。誰でもこれについて何か考えがありますか?

4

1 に答える 1

0

問題の原因UIKitは不明ですが、スレッドセーフではないため、これが原因である可能性があります。メイン スレッドでコードを実行してトラブルシューティングを行い (そしてそれが正しいことを確認して)、私の推測が正しければ、回避策を探すことができます。

回避策を探すには、おそらくperformSelector:onMainThread:が役立つ可能性があります。

于 2011-07-31T17:54:43.540 に答える