title: centralManagerDidUpdateState throws unrecognized selector sent to instance error
body: <p>I have a view controller that starts a bluetooth scan when you push a button. </p>
  
  <p>Here is the <code>.h</code> file:</p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  @import CoreBluetooth;
  
  @interface ViewControllerIntroPage2 : UIViewController{
      IBOutlet UIButton *scanForFetchTagsButton;
  }
  
  @property (nonatomic, retain) UIButton *scanForFetchTagsButton;
  @property (nonatomic, retain) CBCentralManager *mCentralManager;
  
  -(IBAction)scanButtonPressed:(id)sender; 
  
  @end
  </code></pre>
  
  <p>Here is the <code>.m</code> file:</p>
  
  <pre><code>#import "ViewControllerIntroPage2.h"
  #import "BlueToothLEManager.h"
  
  @interface ViewControllerIntroPage2 ()
  
  @end
  
  @implementation ViewControllerIntroPage2
  
  @synthesize scanForFetchTagsButton; 
  
  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  {
      self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
      if (self) {
          // Custom initialization
      }
      return self;
  }
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view.
  }
  
  - (void)didReceiveMemoryWarning
  {
      [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
  }
  
  -(IBAction)scanButtonPressed:(id)sender {
      NSLog(@"Scan Button Clicked");
  
      self.mCentralManager = [[BlueToothLEManager alloc]initializeCBCentralManager];
  
      NSLog(@"Scan Done"); 
  }
  /*
  #pragma mark - Navigation
  
  // In a storyboard-based application, you will often want to do a little preparation before navigation
  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
  {
      // Get the new view controller using [segue destinationViewController].
      // Pass the selected object to the new view controller.
  }
  */
  
  @end
  </code></pre>
  
  <p>Here is my the BluetoothLEManager files:</p>
  
  <p><code>.h</code> file:</p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  
  @import CoreBluetooth;
  @import QuartzCore;
  
  @interface BlueToothLEManager : NSObject &lt; CBCentralManagerDelegate, CBPeripheralDelegate&gt;
  
  @property (strong, retain) CBCentralManager *mBTCentralManager;
  
  -(CBCentralManager*) initializeCBCentralManager;
  
  
  @end
  </code></pre>
  
  <p><code>.m</code> file:</p>
  
  <pre><code>#import "BlueToothLEManager.h"
  #import "Constants.h"
  
  @implementation BlueToothLEManager
  
  
  -(CBCentralManager*)initializeCBCentralManager{
      NSLog(@"initializing CBCentral Manager");
      return self.mBTCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
  }
  
  #pragma mark - CBCentralManagerDelegate
  
  // method called whenever you have successfully connected to the BLE peripheral
  - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
  {
  }
  
  // CBCentralManagerDelegate - This is called with the CBPeripheral class as its main input parameter. This contains most of the information there is to know about a BLE peripheral.
  - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
  {
      NSLog(@"Discovered %@ at %@", peripheral.name, RSSI); 
  }
  
  -(void)centralManagerDidUpdateState:(CBCentralManager *)central{
      NSLog(@"Start scan");
  
      if(central.state == CBCentralManagerStatePoweredOn){
          NSLog(@"Scanning for BTLE device"); 
          [central scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:DEVICE_NAME]] options:@{ CBCentralManagerScanOptionAllowDuplicatesKey : @YES }];
      }
  }
  @end
  </code></pre>
  
  <p>The issue is that the app keeps crashing/pausing. Sometimes it will throw an <code>unrecognized selector sent to instance error</code>, but doesn't always happen. I've checked to make sure that there isn't an issue with the button, because when I remove the <code>self.mCentralManager = [[BlueToothLEManager alloc]initializeCBCentralManager];</code> the app doesn't crash. </p>
  
  <p>Can anyone tell my why this crash is happening and how I can fix it? </p>