NSInvocationOperation - 不在另一个线程上调用方法?

时间:2011-11-22 18:43:32

标签: ios multithreading 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 个答案:

答案 0 :(得分:1)

来自NSInvocationOperation类引用:

  

NSInvocationOperation类是NSOperation的具体子类   管理指定为的单个封装任务的执行   一个调用。您可以使用此类来启动该操作   包括在指定对象上调用选择器。 这堂课   实现非并发操作

这意味着为了异步执行操作,您需要将其添加到操作队列中。