На самом деле вам не нужно вводить логику в AppDelegate (хотя для простых приложений я часто это делаю).Главное, что вам нужно сделать, чтобы ваше приложение запускалось в фоновом режиме, - это запускать логику для запуска мониторинга из метода didFinishLaunching AppDelegate. Пока вызов метода устанавливает мониторинг (даже если это так и происходит)вызывая логику в методе другого класса).это приведет к тому, что ваши методы обратного вызова мониторинга будут вызваны сразу после.
Пока вы удерживаете ссылку на класс, содержащий вашу логику в AppDelegate (например, сделаете его экземпляр переменной класса в AppDelegate), это не будетполучить мусор.
Если вы хотите получить доступ к состоянию этого класса в других частях вашего приложения, вы можете просто сделать его одиночным.Затем вы можете вызывать один и тот же экземпляр класса для доступа к своему состоянию отслеживания маяка из различных контроллеров представления.
Пример этого можно увидеть в классе BeaconTracker , который я создал для проекта с открытым исходным кодом, которыйиспользует именно такой подход Синглтона.Вы можете просмотреть контроллеры AppDelegate и View в одном проекте, чтобы увидеть, как они используются.