ios - 在主线程上调用方法?

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

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

问题是我的 mock 知道如何调用 doSomething 但它不知道如何调用 performSelectorOnMainThread

那么有什么解决办法吗?

最佳答案

Objective-C

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

swift

DispatchQueue.main.async {
    self.doSomething()
}

旧版 Swift

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

https://stackoverflow.com/questions/5606145/

相关文章:

objective-c - 为什么 nil/NULL block 在运行时会导致总线错误?

ios - 如何调用 iPhone map 以获取当前位置作为起始地址的方向

iphone - 如何使用 NSNotificationcenter 的 object 属性

ios - "interfaceOrientation"在 iOS 8 中已弃用,如何更改此方法 O

objective-c - 删除 NSString 的最后一个字符

ios - 如何检查是否为 64 位构建了静态库?

objective-c - 从 block 内调用 [self methodName]?

ios - 找不到符号 : kUTTypeImage

ios - NSPredicate 用于测试 NULL 和空白字符串

objective-c - 有什么方法可以加粗 NSString 的一部分?