Objective C - 在主线程上调用类方法?

时间:2011-04-12 22:40:03

标签: iphone objective-c thread-safety class-method

如何在主线程上调用CLASS METHOD? 类似的东西:

[SomeClass performSelectorOnMainThread:staticMethod withObject:nil];

请不要告诉我创建一个常规方法来调用此类方法。这将是一个明显的解决方案,但不是很干净。

由于

2 个答案:

答案 0 :(得分:29)

[SomeClass performSelectorOnMainThread:staticMethod withObject:nil waitUntilDone:NO];

是的,performSelectorOnMainThread:withObject:waitUntilDone:不是类方法。

是的,它是NSObject上的实例方法。

是的,所有Class对象都是NSObject的实例。 (I'm not kidding!


你也可以这样做:

dispatch_async(dispatch_get_main_queue(), ^{
  [SomeClass doClassyThingWithObject:object1 andDiddleyDoo:foo];
});

答案 1 :(得分:2)

怎么样:

NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:[SomeClass class] selector:@selector(SomeClass) object:nil];
[[NSOperationQueue mainQueue] addOperation:operation];