NSInvocationOperation - не вызывает метод в другом потоке?
Итак, у меня есть класс обслуживания clint, у которого есть метод fetch. Я вызываю этот метод с помощью NSInvocationOperation. и когда я проверяю поток, кажется, что он вызывает mthod в главном потоке. Не весь ли смысл в использовании NSInvocationOperation для асинхронного запуска?
Вызывая метод
ServiceClient *client = [[ServiceClient alloc] init];
NSInvocationOperation *invocatopnOperation = [[NSInvocationOperation alloc] initWithTarget:client selector:@selector(fetch) object:nil];
[invocatopnOperation start];
Метод в сервисе клиента
- (void)fetch
{
if ([[NSThread currentThread] isEqual:[NSThread mainThread]])
{
NSLog(@"NOOOOOO");
}
............
}
1 ответ
Из ссылки на класс NSInvocationOperation:
Класс NSInvocationOperation является конкретным подклассом NSOperation, который управляет выполнением одной инкапсулированной задачи, указанной в качестве вызова. Вы можете использовать этот класс для запуска операции, состоящей из вызова селектора для указанного объекта. Этот класс реализует не параллельную операцию.
Это означает, что для асинхронного выполнения операции необходимо добавить ее в очередь операций.