在主线程上调用方法?

ary*_*axt 74 iphone methods multithreading objective-c ios

首先,我正在为iphone编写代码.我需要能够在不使用主线程的情况下调用方法performSelectorOnMainThread.我不想使用的performSelectorOnMainThread原因是当我尝试为单元测试创​​建模拟时它会导致问题.

[self performSelectorOnMainThread:@Selector(doSomething) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

问题是我的模拟知道如何调用,doSomething但它不知道如何调用performSelectorOnMainThread.

那么任何解决方案

ary*_*axt 240

目标C.

dispatch_async(dispatch_get_main_queue(), ^{
    [self doSomething];
});
Run Code Online (Sandbox Code Playgroud)

迅速

DispatchQueue.main.async {
    self.doSomething()
}
Run Code Online (Sandbox Code Playgroud)

Swift 3和Swift 4

dispatch_async(dispatch_get_main_queue()) {
    self.doSomething()
}
Run Code Online (Sandbox Code Playgroud)