Question: I am trying to initialize a central manager instance to make an app with Bluetooth connectivity.

This is part of my code:

```
class ViewController: UIViewController, CBCentralManagerDelegate {
   var myCentralManager = CBCentralManager(delegate: self, queue: nil) //error on this line
   func centralManagerDidUpdateState(central: CBCentralManager!) { 
}

```

I get an error:

> 
> "Type 'ViewController -> () -> ViewController!' does not conform to protocol 'CBCentralManagerDelegate'
> 
> 
> 

The only method required by the protocol is `centralManagerDidUpdateState()` which I have added, so why do I get an error?

Answer: 
The error message is a little deceiving and is pointing you away from the actual issue. The problem is that you are accessing `self` in the initializer for a stored property, which you can't do like this.

One workaround is to simply declare the property without initializing it, and then move the assignment to the variable to somewhere like an initializer for your view controller, or one of your view controller's lifecycle methods, like viewDidLoad.
You need to at least provide this function in your class:

```
func centralManagerDidUpdateState(_ central: CBCentralManager) {
    <#code#>
}

```