回调方法didEnterRegion为什么每次会连续调用两次

1、didEnterRegion 这个回调是在什么情况下调用的?我没有调用startMonitoringForRegion:,只调用了startRangingBeaconsInRegion这个方法,也会走那个进入和退出回调,这是为啥?
2、didEnterRegion和didExitRegion每次会连续调用两次,这是为什么?

didEnterRegion 和 didExitRegion 都只会在 startMonitoringForRegion 调用了之后才会调用,和系统CLLocationManager的回调功能一致。 enterRegion会在第一次进入到该beacon的范围回调,exitRegion会在离开该区域回调,并且enter次数一般情况下合exit是一一对应的。
https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/index.html

我在demo中把startMonitoringForRegion屏蔽掉,运行Ranging demo,退出到后台,程序仍然能接收到退出与进入通知

你是不是之前注册过没有stopMonitoringForRegion,如果没有stop 那么系统会把你之前注册过的region保留。

奥,貌似有些明白了,那startMonitoringForRegion与startRangingBeaconsInRegion应该一块使用吧,如果不使用startMonitoringForRegion,就不能够扫描到ibeacon设备了

startMonitoringForRegion 与 startRangingBeaconsInRegion不一定一块使用。startRangingBeaconsInRegion你只要传入该CLBeaconRegion,就能扫描到周围所有对应beacon。

startMonitoringForRegion可以在后台跑,而startRangingBeaconsInRegion不行