Цель C - Вызов метода класса в главном потоке? - PullRequest
8 голосов
/ 13 апреля 2011

Как я могу вызвать CLASS METHOD в главном потоке?Что-то вроде:

[SomeClass performSelectorOnMainThread:staticMethod withObject:nil];

Пожалуйста, не говорите мне создавать обычный метод для вызова этого метода класса.Это было бы очевидным решением, но не чистым.

Спасибо

Ответы [ 2 ]

29 голосов
/ 13 апреля 2011
[SomeClass performSelectorOnMainThread:staticMethod withObject:nil waitUntilDone:NO];

Да, performSelectorOnMainThread:withObject:waitUntilDone: не является методом класса.

Да, это метод экземпляра в NSObject.

Да, все объекты класса являются экземплярами NSObject. ( Я не шучу! )


Вы также можете сделать:

dispatch_async(dispatch_get_main_queue(), ^{
  [SomeClass doClassyThingWithObject:object1 andDiddleyDoo:foo];
});
2 голосов
/ 17 июля 2012

Как насчет:

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