【发布时间】:2014-09-28 00:53:03
【问题描述】:
我有一个通过 BLE UART 连接与设备通信的应用程序。 当接收到数据时,调用 didReceiveData() 委托。 在这里,我需要确定谁调用了数据并触发(另一个委托的)相应方法。 我正计划创建一个连接字典,该字典由建立连接时创建的 connectionID 字符串作为键,以及回调的选择器(可能并不总是提供)。
class Connection: NSObject {
var selectr: Selector
var dataString: String?
init(selectR:Selector,dString:String) {
selectr = selectR
dataString = dString
}
}
connections[String:Connection]()
func sendData(dataString:String,callbackSelector:Selector){
con = Connection(selectR: callbackSelector, dString:"")
connections[cid] = con
}
... 调用时:
let sel = Selector(anotherDelegate?.didReceiveLocation(""))
self.sendData("sendMe",Selector(anotherDelegate?.didReceiveLocation))
我在这样做时遇到了一些错误,首先是 Type NSData 不符合协议 StringLiteralConvertible。 NSData 指的是 didReceiveLocation 的参数。 第二个在 self.sendData 行:无法使用类型为 (StringLiteralConvertible,Selector) 的参数列表调用“init”。
这种方法有意义吗?如何将另一个委托的回调方法存储在字典或其他结构中以使其可以从 didReceiveData 委托方法访问?
【问题讨论】:
标签: ios asynchronous swift callback serial-port