问题
How can I call a CLASS METHOD on the main thread?
Something like:
[SomeClass performSelectorOnMainThread:staticMethod withObject:nil];
Please don't tell me to create a regular method to call this class method. That would be an obvious solution, but not clean.
Thanks
回答1:
[SomeClass performSelectorOnMainThread:staticMethod withObject:nil waitUntilDone:NO];
Yes, performSelectorOnMainThread:withObject:waitUntilDone: is not a class method.
Yes, it is an instance method on NSObject.
Yes, all Class objects are instances of NSObject. (I'm not kidding!)
You could also do:
dispatch_async(dispatch_get_main_queue(), ^{
[SomeClass doClassyThingWithObject:object1 andDiddleyDoo:foo];
});
回答2:
How about:
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:[SomeClass class] selector:@selector(SomeClass) object:nil];
[[NSOperationQueue mainQueue] addOperation:operation];
来源:https://stackoverflow.com/questions/5642463/objective-c-calling-a-class-method-on-the-main-thread