Swift中的对象包装(代理)转发方法
Swift中的对象包装(代理)转发方法,swift,wrapper,Swift,Wrapper,cbperipal是一个痛苦的测试对象,因为它本身无法实例化。因此,我在它周围使用了一个包装器(HBRPeripheralWrapper)(也用于其他目的) 我想把大部分电话转寄到包装上 (HBRPeripheralWrapper)到实际包装的对象CBPeripheral 从技术上讲,它使用forwardInvocation工作,但是如何在Swift中采用类似的模式呢 注:NSInvocation在Swift class HBRPeripheralWrapper { let peripher
cbperipal
是一个痛苦的测试对象,因为它本身无法实例化。因此,我在它周围使用了一个包装器(HBRPeripheralWrapper
)(也用于其他目的)
我想把大部分电话转寄到包装上
(HBRPeripheralWrapper
)到实际包装的对象CBPeripheral
从技术上讲,它使用forwardInvocation
工作,但是如何在Swift
中采用类似的模式呢
注:NSInvocation
在Swift
class HBRPeripheralWrapper {
let peripheral:CBPeripheral
// I would like to avoid this "manual" forwarding
var identifier: NSUUID {
get {
return peripheral.identifier
}
}
init(peripheral:CBPeripheral) {
self.peripheral = peripheral
}
// target forwarding is great, but how can I make the compiler happy?
override func forwardingTargetForSelector(aSelector: Selector) -> AnyObject? {
if(self.peripheral.respondsToSelector(aSelector)) {
return self.peripheral
}
return super.forwardingTargetForSelector(aSelector)
}
}
<> >而不是制作<代码> HBRealPurralWraseP<代码>,考虑扩展<代码> CBEXPLORITE < /COD>
extension CBPeripheral {
// add whatever else you need here.
}
您在“代码”> HRBRealErralWrase</C> >中除了“转发”外,没有详细说明您所做的工作,因此我不能提供更多帮助。
< P>代替“<代码> HBRealPurralWraseP< <代码> >,请考虑扩展<代码> CBEnguleextension CBPeripheral {
// add whatever else you need here.
}
除了转发,您没有确切说明在
HBRPeripheralWrapper
中要做什么,所以我无法提供更多帮助。Thx获取答案。我正在包装而不是子类,因为我添加了一些作为子类没有意义的功能,也因为您无法在iOS上手动创建cbperipal
。除了这个考虑,还有什么好的包装方法吗?我不是建议你使用子类。扩展方法被添加到类的任何对象中——即使是您没有创建的对象。添加更多关于您正试图做的事情的信息,我将为这个答案添加更多信息。哦,是的,对不起。但是我需要存储。你可以使用关联的对象来存储:Thx。我知道这件事。我想尝试一个更冷静的解决方案。答案是Thx。我正在包装而不是子类,因为我添加了一些作为子类没有意义的功能,也因为您无法在iOS上手动创建cbperipal
。除了这个考虑,还有什么好的包装方法吗?我不是建议你使用子类。扩展方法被添加到类的任何对象中——即使是您没有创建的对象。添加更多关于您正试图做的事情的信息,我将为这个答案添加更多信息。哦,是的,对不起。但是我需要存储。你可以使用关联的对象来存储:Thx。我知道这件事。我想尝试一个更冷静的解决方案。