Zrobiłem to proste rozszerzenie w SWIFT:Jak zapobiec eksportowaniu rozszerzenia do nagłówka Swift dla Objective-C?
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)
}
}
W Project-Swift.h nagłówku raportowaniem błąd na tej linii:
@interface OS_dispatch_queue (SWIFT_EXTENSION(...))
- (void)asyncAfterDelay:(NSTimeInterval)delay block:(void (^ _Nonnull)(void))block;
@end
błędu jest: nie można odnaleźć deklarację interfejsu dla „OS_dispatch_queue '
Czy istnieje sposób, aby zapobiec eksportowaniu rozszerzenia dla Objective-C? Czy istnieje sposób, aby naprawić błąd?
jego „@noobjc” dla zapobiegania ... ale to nie rozwiązuje problemu, ponieważ klasa „DispatchQueue” jest nadal eksportowane do „OS_dispatch_queue”, która jest nieznana Objective-C i nadal kończy się niepowodzeniem. –