我有一个非常简单的 Swift objc
类,我想从中调用在 Objective-C 中定义的类的类别中定义的方法。
然而,编译器并不高兴:
.../UploadOperation.swift:25:24: error: value of type 'MyServer' has no member 'clearPendingData'
self.server?.clearPendingData();
当我将 clearPendingData
的声明移动到主类声明时,编译器很高兴(除了我现在在我的 Objective-C 代码中收到关于主类与类别方法实现的警告)。
这是文件 UploadOperation.swift 中的 Swift 声明
@objc class UploadOperation: Operation {
@objc var server: MyServer? = nil
override init() {
super.init()
self.completionBlock = { [unowned self] () in
self.server?.clearPendingData()
}
}
}
这是类别,在文件 MyServer+upload.h 中:
#import "MyServer.h"
@class UploadOperation;
@interface MyServer (upload)
- (void) clearPendingData;
@end
和主类声明,在文件 MyServer.h 中
@interface MyServer : NSObject
- (MyServer *) init;
// and a ton of stuff omitted
@end
(当然省略了很多不相关的代码)
这是 Xcode 10.1。
什么给了? 谢谢
最佳答案
如果您希望从类别中定义的 Swift 访问 Objective-C 方法,您必须在桥接文件中包含类别 header 和类 header 。在这种情况下,包括 MyServer+upload.h
以及 MyServer.h
。您的错误表明您还没有这样做。
关于objective-c - Swift 代码看不到在 Objective-C 类别中声明的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364529/