0

5 のキューがありますNSOperations。キューはsetMaxConcurrentOperationCount1 に設定されています。各操作は基本的に、特定のファイルをダウンロードするためのサーバーへの呼び出しです。

ファイルがディスクに保存されたときにNSOperation のみ、あるファイルのダウンロードが終了して別のファイルが開始されるかどうかを追跡する最良の方法は何ですか? またはNSOperations、ファイルのダウンロードの進行状況を確認する方法はありますか?

4

2 に答える 2

1

isFinishedサブクラスのメソッドをオーバーライドして、実際に終了したときにのみNSOperation戻るようにする必要があります。YES

于 2012-12-18T14:50:15.680 に答える
1

サブクラス化して、データをダウンロードしてファイルシステムに保存するためのコードをサブクラスのメソッドNSOperationに入れることができます。操作が完了すると、次の操作が自動的に実行されます。-mainNSOperationNSOperationQueue

@implementation MyOperation

- (void) main {
    if ([self isCancelled]) {
        NSLog(@"** operation cancelled **");
    } else {
        NSURL *conUrl = [NSURL URLWithString: urlString];
        NSError *error;
        NSData *conData = [NSData dataWithContentsOfURL: conUrl options: NSDataReadingMappedIfSafe error: & error];
        if (!error) {
            UIImage *image = [
                [UIImage alloc] initWithData: conData];

            NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
            NSString *jpgFilePath = [NSString stringWithFormat: @"%@/%@.jpg", cacheDir, textLabel];
            conData = [NSData dataWithData: UIImageJPEGRepresentation(image, 1.0f)];
            [conData writeToFile: jpgFilePath atomically: YES];
        }
    }

    NSLog(@"Operation finished");
}


@end
于 2012-12-18T15:01:28.337 に答える