我正在使用 Swift 3 为 iOS 开发一个应用程序,需要一个 Objective-C 库来连接一些服务。这个库有一些需要回调函数的方法,该方法有效,因为在库的日志中我可以看到数据是接收的。
问题是接下来,当我将 nil 传递给选择器时我没有任何问题,但是当我放置一个函数时,我得到了下一个错误:
2017-03-08 12:30:51.792 ios-example[1095:15243] *** NSForwarding: warning: object 0x608000227d20 of class 'ios-example.ConnectionSettings' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[ios-example.ConnectionSettings performSelectorOnMainThread:withObject:waitUntilDone:]
代码是这样的:
导入基金会
class ConnectionSettings {
var _service : ServiceCall?
@objc func getName(message : StringMessage) {
print("name : \(message.data)")
}
init() {
self._service = Services.makeService(RB_SERVICE_NAME,
responseTarget: self,
selector: #selector(self.getName)))!)
self._service.send();
}
}
我认为问题很容易解决,但我不知道该怎么做。有人可以帮帮我吗?
谢谢:)
答案 0 :(得分:0)
错误消息告诉您库最终调用-[ios-example.ConnectionSettings performSelectorOnMainThread:withObject:waitUntilDone:]
,这是NSObject
上定义的Objective-C选择器。您的类需要是NSObject
class ConnectionSettings: NSObject { ... }
修改强>
您遇到的第二个问题是传递给getName
方法的对象没有data
选择器。实际上,看起来您正在传递Service
对象。