1

为什么不调用 CBPeripheralManagerDelegate 方法虽然我已将类初始化为 var bluetoothManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)

并且已经在我的 Bundle 中添加了蓝牙框架。

import UIKit
import CoreBluetooth

class AppSettingsViewController: UIViewController {



    override func viewDidLoad() {
        super.viewDidLoad()

       var bluetoothManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

extension AppSettingsViewController : CBPeripheralManagerDelegate{


    func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) {

        if peripheral.state == CBPeripheralManagerState.PoweredOn{

            println("broadcasting")



        }else if peripheral.state == CBPeripheralManagerState.PoweredOff{

            println("no bluetooth found")

        }else if peripheral.state == CBPeripheralManagerState.Unauthorized {

            println("This option is not allowed by your application")

        }

    }


}
4

2 回答 2

3

使您bluetoothManager的实例变量。目前它在完成时被释放viewDidLoad()

于 2015-04-23T08:19:46.033 回答
2

您必须保存您bluetoothManager的 ViewController 的全局变量才能接收回调。

class AppSettingsViewController: UIViewController, CBPeripheralManagerDelegate {

    var bluetoothManager : CBPeripheralManager?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.bluetoothManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)


    }
}
于 2015-04-23T08:39:55.153 回答