Ответ 1
Вы, вероятно, ARC'd. Убедитесь, что у вас все еще есть ссылка на ваш CLLocationManager. Вы можете легко сделать это, сделав это свойством.
ARC означает автоматический подсчет ссылок. В проекте с поддержкой ARC (и если вы не работаете над чем-то действительно старым или не отключили его специально, ваш проект является проектом с поддержкой ARC), вам необходимо сохранять ссылки на объекты, которые вы будете использовать позже. CLLocationManager не возвращает синглтон, поэтому вам нужно сохранить ссылку на него в ваших классах, которые заботятся. Что-то вроде этого:
@property (strong, nonatomic) CLLocationManager *locationManager
См. Документацию Apple ARC для получения подробной информации. (И спасибо Фалько за то, что он нашел глубокую ссылку на это.)
Я добавляю комментарий Гоби на тот случай, если вы не прокрутите его, чтобы прочитать.
Для Swift: вместо создания объекта локальной области locationManager, пусть это будет свойство ваших классов, которые заботятся, например, private let locationManager = CLLocationManager(), а затем обычно используется как self.locationManager.requestWhenInUseAuthorization()