aryaxt aryaxt - 6 months ago 7
Objective-C Question

Calling a method on the main thread?

First of all I am writing code for iphone.
I need to be able to call a method on the main thread without using

performSelectorOnMainThread
.
The reason that I don't want to use
performSelectorOnMainThread
is that it causes problem when I am trying to create a mock for unit testing.

[self performSelectorOnMainThread:@Selector(doSomething) withObject:nil];


The problem is that my mock knows how to call
doSomething
but it doesn't know how to call
performSelectorOnMainThread
.

So Any solution?

Answer

Objective C

dispatch_async(dispatch_get_main_queue(), ^{
  [self doSomething];
});

Swift

dispatch_async(dispatch_get_main_queue()) {
   self.doSomething()
}