#iphone #objective-c #ios
#iPhone #objective-c #iOS
Вопрос:
У меня есть приложение, в котором работает множество веб-сервисов и уведомлений. Мне нужна функция выхода из системы. Хотелось бы, чтобы был способ просто закрыть приложение и перезапустить его, но его нет. Есть ли у кого-нибудь рекомендуемые рекомендации по созданию функции выхода из системы (она вернет пользователя на экран входа в систему). Проблема в том, что есть уведомления, от которых следует отказаться, представления, которые следует удалить, контроллеры просмотра, которые я хочу выпустить, а затем все для повторной инициализации. Это кажется большой работой для простой задачи. Есть мысли?
Ответ №1:
Первое, что нужно убедиться при завершении всех запросов, — это изменить все делегаты, которые должны получать ответы, на nil . После того, как вы позаботились об этом, вам действительно следует удалить все нерелевантные представления контроллера представления из вашего корневого представления (и освободить их, если они где-либо сохранены), и, конечно, удалить все существующие данные, которые вам не нужны. Если вы создадите свой MVC элегантно, вы сможете выполнить эти действия без особых хлопот, например, у одноэлементного класса ScreenManager, который управляет всеми вашими контроллерами просмотра, не должно возникнуть проблем с возвратом к экрану входа при выпуске любого другого представления. У одноэлементного класса DataManager, который содержит различные коллекции данных, не должно возникнуть проблем с удалением любых ненужных объектов данных и так далее…
Комментарии:
1. Я понимаю. Это был маршрут, по которому я направлялся (и да, мое приложение настроено так, как вы описали с помощью одноэлементных сервисов), я просто хотел убедиться, что я не делаю ничего необычного. Спасибо!
2. @Stavash Можете ли вы объяснить назначение класса типа ScreenManager и где я мог бы найти больше информации о том, как настроить мое приложение таким «элегантным» способом?
3. На самом деле у меня нет примера, которым я могу поделиться, но, как правило, есть два возможных подхода: 1. Подкласс NSObject и одноэлементный класс, который содержит ссылки на текущий активный контроллер, На любое активное оповещение, навигационный контроллер и т. Д. И Управляет навигацией по экрану оттуда. 2. Подкласс UIViewController такой, чтобы у вас был своего рода диспетчер экрана для каждого основного потока (у которого есть корневой контроллер). Надеюсь, это поможет.