ios - developer - La vista de alerta desaparece por sí sola al llamar a[locationManager requestWhenInUseAuthorization];
mapkit view swift (1)
Probablemente estás siendo ARC''d. Asegúrese de que todavía tiene una referencia a su CLLocationManager. Puedes hacerlo fácilmente haciéndolo una propiedad.
ARC significa conteo automático de referencias. En un proyecto habilitado para ARC (y a menos que esté trabajando en algo realmente antiguo o lo haya desactivado a propósito, su proyecto es un proyecto habilitado para ARC), debe mantener las referencias a los objetos que utilizará más adelante. CLLocationManager no devuelve un singleton por lo que necesita mantener una referencia a él en las clases que le interesan. Algo como esto:
@property (strong, nonatomic) CLLocationManager *locationManager
Consulte la documentación ARC de Apple para más detalles. (Y gracias a Falko por buscar el vínculo profundo con eso).
Pongo el comentario de Gobe en línea en caso de que no se haya desplazado para leerlo.
Para Swift: en lugar de crear un objeto de locationManager de alcance local, déjelo como una propiedad de sus clases a las que le importa, como private let locationManager = CLLocationManager () y luego utilícelo normalmente como self.locationManager.requestWhenInse UseAuthorization ()
estoy llamando
[locationManager requestWhenInUseAuthorization];
en una pantalla que muestra un MKMapView
( showsUserLocation = YES
). Lo que parece extraño en primer lugar (Apple debería manejar esto para MKMapView
automáticamente, pero XCode se quejaba cuando no lo hice).
Entonces obtengo la vista de alerta que dice que la aplicación quiere usar su ubicación, pero luego la vista de alerta desaparece por sí sola.
¿Por qué la vista de alerta desaparece por sí sola?
Lo único que se me ocurre es que estoy llamando requestWhenInUseAuthorization
en el método initWithCoder
. Solo lo hago porque creo que vi la queja de Xcode cuando la llamé desde viewDidLoad.