首先,我正在为 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 的最后一个字符
objective-c - 从 block 内调用 [self methodName]?