ビーコンの検知までに時間がかかる事象が発生しています。

再現手順は、
①[self findBeacon]; を実行して検知を開始する
②ビーコンをONにする
③「EnterRegion.」「CLRegionStateInside.」が表示される
④「FindBeacon.」が表示されビーコンを検知
⑤ビーコンをOFF
⑥しばらくすると「ExitRegion」「CLRegionStateOutside」が表示される
⑦ビーコンをONにする

この後に「EnterRegion.」「CLRegionStateInside.」が表示されるまでに時間がかかる場合があります。
iPhone5(iOS8.4.1)で試しているんですが、30秒程度かかる場合もあれば2、3秒で表示される場合もあります。
別の端末だと、2分以上かかる場合もありました。

「EnterRegion.」にならないとビーコンが検知されないようなので困っています。

実装のやり方として間違っているところがありますでしょうか?
よろしくお願い致します。

- (void)findBeacon {
  CLLocationManager *locationManager = [CLLocationManager new];
  [locationManager startMonitoringForRegion:beaconRegion];
}

- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
  NSLog(@"startMonitoring");
  [manager requestStateForRegion:region];
}

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
  switch (state) {
    case CLRegionStateInside:
      NSLog(@"CLRegionStateInside");
      CLBeaconRegion *beaconRegion = (CLBeaconRegion*)region;
      [manager startRangingBeaconsInRegion:beaconRegion];
      break;
    case CLRegionStateOutside:
      NSLog(@"CLRegionStateOutside");
      break;
}

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
  NSLog(@"EnterRegion.");
  [manager startRangingBeaconsInRegion:(CLBeaconRegion*)region];
}

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
  NSLog(@"ExitRegion.");
  [manager stopRangingBeaconsInRegion:(CLBeaconRegion *)region];
}

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
  NSLog(@"FindBeacon.");
}