Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的对象包装(代理)转发方法_Swift_Wrapper - Fatal编程技术网

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< <代码> >,请考虑扩展<代码> CBEngule

extension CBPeripheral {
    // add whatever else you need here.
}

除了转发,您没有确切说明在
HBRPeripheralWrapper
中要做什么,所以我无法提供更多帮助。

Thx获取答案。我正在包装而不是子类,因为我添加了一些作为子类没有意义的功能,也因为您无法在iOS上手动创建
cbperipal
。除了这个考虑,还有什么好的包装方法吗?我不是建议你使用子类。扩展方法被添加到类的任何对象中——即使是您没有创建的对象。添加更多关于您正试图做的事情的信息,我将为这个答案添加更多信息。哦,是的,对不起。但是我需要存储。你可以使用关联的对象来存储:Thx。我知道这件事。我想尝试一个更冷静的解决方案。答案是Thx。我正在包装而不是子类,因为我添加了一些作为子类没有意义的功能,也因为您无法在iOS上手动创建
cbperipal
。除了这个考虑,还有什么好的包装方法吗?我不是建议你使用子类。扩展方法被添加到类的任何对象中——即使是您没有创建的对象。添加更多关于您正试图做的事情的信息,我将为这个答案添加更多信息。哦,是的,对不起。但是我需要存储。你可以使用关联的对象来存储:Thx。我知道这件事。我想尝试一个更冷静的解决方案。