这是我创建的自定义类:
import UIKit import CoreBluetooth protocol vaBeanDelegate { } class vaBean: CBCentralManager,CBCentralManagerDelegate { override init!(delegate: CBCentralManagerDelegate!,queue: dispatch_queue_t!) { println("bean initialised") super.init() self.delegate = delegate } func centralManager(central: CBCentralManager!,didDiscoverPeripheral peripheral: CBPeripheral!,advertisementData: [NSObject : AnyObject]!,RSSI: NSNumber!) { println("discovered peripheral(s)") } func centralManagerDidUpdateState(central: CBCentralManager!) { switch (central.state) { case .PoweredOff: println("hardware is powered off") case .PoweredOn: println("hardware is powered on and ready") //centralManager.scanForPeripheralsWithServices(nil,options: nil) case .Resetting: println("hardware is resetting") case .Unauthorized: println("state is unauthorized") case .Unknown: println("state is unknown"); case .Unsupported: println("hardware is unsupported on this platform"); } } func centralManager(central: CBCentralManager!,didConnectPeripheral peripheral: CBPeripheral!) { println("didConnectPeripheral") } }
我只是不知道如何从我的主ViewController初始化它.当我尝试以下操作时,它会抱怨ViewController不符合CBCentralManagerDelegate:
import UIKit class ViewController: UIViewController { var myBean: vaBean! override func viewDidLoad() { super.viewDidLoad() println("blueToothTest v1.00") println("opening bluetooth connection ...") myBean = vaBean(delegate: self,queue: nil) } override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()} }
解决方法
Swift和Objective-C只是单一继承,一个类不能有多个超类.
当您在声明中看到Swift代码看起来像多个超类时,您会看到最多,声明中的一个名称是超类,其他名称是协议名称.
在Objective-C中,这些将用<有角度的括号>写成.但Swift的情况并非如此.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。