Objective C - Calling a class method on the main t

2019-03-27 00:31发布

问题:

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];