NSInvocationOperation - не вызывает метод в другом потоке? - PullRequest
0 голосов
/ 22 ноября 2011

Итак, у меня есть класс обслуживания 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 Ответ

1 голос
/ 03 января 2012

Из ссылки на класс NSInvocationOperation:

Класс NSInvocationOperation является конкретным подклассом NSOperation который управляет выполнением одной инкапсулированной задачи, указанной как вызов. Вы можете использовать этот класс для запуска операции, которая состоит из вызова селектора для указанного объекта. Этот класс реализует не параллельную операцию .

Это означает, что для асинхронного выполнения операции необходимо добавить ее в очередь операций.

...