4

ここに画像の説明を入力

編集:スクリーンショットで強調表示されている行は、私が問題を抱えているものです。なぜ私はそれを呼び出していないのにNSURLConnection実行されているのですか?[NSThread main]AFNetworking

プロジェクトに AFNetworking を使用していますが、Instruments で Time Profiler を実行すると、NSURLConnection のメインスレッドで多くのアクティビティが見られます。これは私が望んでいるものではないと感じています。

私の方法は

- (void)parseArticles {   
    NSMutableArray *itemsToParse = [[FMDBDataAccess sharedDatabase] getItemsToParse];

    NSMutableArray *operations = [[NSMutableArray alloc] init];


    for (Post *p in itemsToParse) {

        NSMutableString *strURL = [NSMutableString new];
        [strURL appendString:@"http://xxxxxxxxxxxxxxxxxxxxxx.php?url="];
        [strURL appendString:[p href]];

        NSURL *url = [NSURL URLWithString:strURL];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
        [[ParserClient sharedInstance] registerHTTPOperationClass:[AFHTTPRequestOperation class]];

        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

            dispatch_async(loginParseQueue, ^{

                Parser *parse = [[Parser alloc] init];
                [parse parseLink:responseObject rowID:[p rowID]];
            });
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"%@",error);
        }];
        [operations addObject:operation];
    }
    NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
    [operationQueue setMaxConcurrentOperationCount:3];
    [operationQueue addOperations:operations waitUntilFinished:NO];
}

AFNetworking がメイン スレッドを使用するのはなぜですか? どうすれば修正できますか。

4

3 に答える 3

4

AFNetworking はメイン スレッドではなく子スレッドで実行されていますが、すべてのスレッドには、投稿した画像にあるメイン メソッドがあります。これはメイン スレッドではありません。何を修正したいのか教えてください。

于 2013-06-04T12:52:28.017 に答える