如何覆盖框架中的public var?

时间:2017-07-16 15:57:12

标签: swift frameworks

在我自己的可可触摸框架中

open class BLE: NSObject,CBCentralManagerDelegate,CBPeripheralDelegate {

  public var myCentralManager: CBCentralManager!
  public var myPeripheral: CBPeripheral!
  public var writeCharacteristic: CBCharacteristic!
  public var DEVICENAME: String = ""
  public var result: String = ""

  public func initialBLE(cm: CBCentralManager){

    debugPrint("Process in initialBLE()")
    self.myCentralManager = cm
    myCentralManager.delegate = self
    debugPrint("Process in initialBLE(), myCentralManager=\(myCentralManager)"); 
    // here myCentralManager have a instance
}

然后我在viewcontroller中使用我自己的框架,如下所示

class ViewController: UIViewController
{
  var  myCentralManager:CBCentralManager!
  var  myPeripheral:CBPeripheral!

  override func viewDidLoad() {
    super.viewDidLoad()
    myCentralManager = CBCentralManager()

    BLE().initialBLE(cm:myCentralManager)
    debugPrint("BLE().myCentralManager= \(BLE().self.myCentralManager)")
    // here is the problem, BLE().myCentralManager = nil

那么如何在框架中设置myCentralManager?

1 个答案:

答案 0 :(得分:0)

据我所知,您没有对您创建的实例进行引用。您应该持有一个引用并在同一个对象上检查myCentralManager

let bleInstance = BLE().initialBLE(cm:myCentralManager)
// bleInstance.myCentralManager will have your desired value

您要创建BLE的新实例,并在不调用myCentral的情况下查看其initialBLE()字段。

debugPrint("BLE().myCentralManager= \(BLE().self.myCentralManager)")

您正在比较两个新鲜实例。这不是在框架中覆盖public个变量。