我用 Swift 做了这个简单的扩展:
extension DispatchQueue {
func asyncAfter(delay: TimeInterval, block: @escaping ()->()) {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: block)
}
}
在 Project-Swift.h header 中,它在这一行报告错误:
@interface OS_dispatch_queue (SWIFT_EXTENSION(...))
- (void)asyncAfterDelay:(NSTimeInterval)delay block:(void (^ _Nonnull)(void))block;
@end
Error is: Cannot find interface declaration for 'OS_dispatch_queue'
有没有办法阻止为 Objective-C 导出扩展?或者有什么办法可以解决这个错误吗?
最佳答案
我知道这不是一个答案,但我在使用公共(public)扩展 DispatchQueue 时遇到了同样的问题: dispatch_once after the Swift 3 GCD API changes
所以在我的案例中,使用 Vlad 的解决方案帮助我避免了这个经常出现的问题: https://stackoverflow.com/a/41570198/1672521
关于ios - 如何防止将扩展导出到 Objective-C 的 Swift header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951197/