Я новичок в очереди операций, поэтому дайте мне возможность задать вопрос, который может быть задан уже между тем, я много искал, но не смог найти нужное решение.Как реализовать NSOperationQueue в правильном направлении
У меня есть API, который удаляет отдельный документ и его рабочий тон с помощью AFNetworking
(которые принимают documentID как param и accesstoken). Теперь я хочу удалить многократный документ, решение должно состоять в том, что у меня должен быть другой API, который принимает массив или строку (разделенные запятой).
Насколько я знаю, решение должно состоять в том, чтобы вызвать этот API в Loop и удалить все, но я слышал другое решение, которое равно NSOperationQueue
. Я видел учебное пособие, но я не могу правильно использовать его. Ниже приведен мой код для вызова одной операции.
NSString *jsonString = @"";
NSString *authorizationValue = [self setAuthorizationValue:action];
NSString *language = @"en_US";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:language forHTTPHeaderField:@"Accept-Language"];
[request setValue:authorizationValue forHTTPHeaderField:@"authorization"];
//convert parameters in to json data
if ([params isKindOfClass:[NSDictionary class]]) {
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params
options:NSJSONWritingPrettyPrinted
error:&error];
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
[request setURL:[NSURL URLWithString:action]];
[request setTimeoutInterval:500.0];
[request setHTTPMethod:@"DELETE"];
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postBody];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
Так любезно наставит меня, как называет это в очереди операции, мне нужно, чтобы создать этот вызов и поместить в массив, а затем добавить их в очередь операций.
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
// Set the max number of concurrent operations (threads)
[operationQueue setMaxConcurrentOperationCount:3];
[operationQueue addOperations:@[operation] waitUntilFinished:NO];
Ищет ответ. Благодаря
Следует отметить, что, хотя вы можете правильно реализовать подход, используя 'NSOperationQueue' - это не метод _optimal_ для решения этой проблемы. Этот подход имеет ряд (небольших) оговорок - но обычно это достаточно, если наши требования умеренные. Если вы хотите выжать лучшее из своего устройства - есть лучшие подходы. – CouchDeveloper