我有一个实现协议的文件和另一个调用该协议的文件 //// DeviceBLE.swift//import Foundationimport CoreBlueToothimport QuartzCoreimport UIKitclass DeviceBLE: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate { var ce
//
// DeviceBLE.swift
//
import Foundation
import CoreBlueTooth
import QuartzCore
import UIKit
class DeviceBLE: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager : CBCentralManager!
init() {
super.init()
centralManager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(central: CBCentralManager!){
// Determine the state of the peripheral
if (central.state == .PoweredOff) {
println("CoreBluetooth BLE hardware is powered off")
}
else if (central.state == .PoweredOn) {
println("CoreBluetooth BLE hardware is powered on and ready")
// connectPeripheral(_ peripheral: CBPeripheral!,
// options options: [NSObject : AnyObject]!)
}
else if (central.state == .Unauthorized) {
println("CoreBluetooth BLE state is unauthorized")
}
else if (central.state == .Unknown) {
println("CoreBluetooth BLE state is unknown")
}
else if (central.state == .Unsupported) {
println("CoreBluetooth BLE hardware is unsupported on this platform")
}
}
}
这是文件调用
// ViewController.swift
// BleTest
import Foundation
import CoreBlueTooth
import QuartzCore
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var myBle = DeviceBLE()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
问题是当实例化DeviceBle时,不会调用centralManagerDidUpdateState.我不明白我做错了什么.有人可以帮忙吗?
可能是您正在将myBle设置为局部变量,因此在viewDidLoad方法的执行结束时,将取消分配DeviceBLE.尝试使myBle成为ViewController类的实例变量.class ViewController: UIViewController {
var myBle: CBCentralManager?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.myBle = DeviceBLE()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
另外,在您的委托方法中.最好使用switch语句而不是几个if语句.
