iBeacon: ¿Cuál es la diferencia entre didEnterRegion y didDetermineState (CLRegionStateInside)

Quiero publicar una notificación cuando los usuarios entren en una región. Sin embargo, estoy muy confundido debido a los mismos dos métodos CLLocationManagerDelegate. ¿Cómo debo usar los dos métodos correctamente?

Algunas personas dicen que el método "didDetermineState" es necesario para iniciar la observación de la región si la aplicación se inicia en la región.

Gracias,

- (void)locationManager:(CLLocationManager *)manager
         didEnterRegion:(CLRegion *)region
{
    [self sendNotification:@"didEnterRegion"];
}

- (void)locationManager:(CLLocationManager *)manager
      didDetermineState:(CLRegionState)state
              forRegion:(CLRegion *)region
{
    switch (state) {
        case CLRegionStateInside:
         [self sendNotification:@"didEnterRegion"];
            break;
        case CLRegionStateOutside:
            break;
        case CLRegionStateUnknown:
            break;
        default:
            break;
    }
} 

Respuestas a la pregunta(1)

Su respuesta a la pregunta