这是我创建的自定义类:
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的情况并非如此.