2013-03-19 3 views
1

Я относительный новичок в разработке iOS, но мне удалось заставить мое приложение делать все, что я хочу. Тем не менее, у меня есть некоторые вопросы об объединении приложения.Как связать appDelegate с остальной частью приложения?

Единственный код, который у меня есть в моем приложении appDelegate, обрабатывает удаленные уведомления; когда я получаю удаленное уведомление, я отправляю пользователю сообщения, сообщения и т. д. Я также генерирую уведомления для центра уведомлений, которые вызывают разные методы для запуска внутри разных контроллеров представлений.

Как насчет всех различных функций в appDelegate? DidEnterBackground, WillEnterForeground и т. Д.? Мое приложение запускается на одном представлении (view1), которое создает объект (stream1), который имеет метод stopStream. У меня есть кнопки для запуска и остановки потоков ([self.stream1 stopStream]). Мой вопрос в том, как мне вызвать эти методы, чтобы остановить этот конкретный экземпляр объекта в одном из методов appDelegate? Нужно ли мне создавать уведомление для центра уведомлений внутри appDelegate и обрабатывать его при запуске в представлении? Или есть более простой метод? Или я делаю все совершенно неправильно, а не в соответствии с лучшими практиками?

Любая помощь будет оценена! Кроме того, ссылка на руководство по архитектуре приложений или ссылку на вашу любимую книгу о создании приложений в iOS было бы здорово!

ответ

1

Делегат вашего приложения должен только реализовать различные методы делегирования приложений, если делегат приложения действительно должен что-то сделать с этими событиями.

Если какой-либо контроллер или другой класс заинтересованы в различных уведомлениях делегата приложения (например, введите фон или вернитесь на передний план и т. Д.), Тогда контроллер вида или другой класс должен зарегистрироваться для соответствующего уведомления. См. Документы для UIApplication для различных уведомлений.

Не следует использовать метод делегирования приложения для пользовательского уведомления.

+0

поэтому appDelegate отправляет уведомление, когда вызывается его различные методы? интересно; я буду искать документацию! – Bassel

+0

Нет, это не то, что я сказал. Например, когда приложение возвращается на передний план, ОС выполняет две независимые вещи. 1) Он вызывает метод applicationWillEnterForeground: 'в делете приложения, если он реализован. 2) Он размещает 'UIApplicationWillEnterForegroundNotification'. Любой класс, который регистрирует это уведомление, получит уведомление. – rmaddy

+0

ah ok; это очень полезно. Спасибо! – Bassel

0

Все методы, которые вы ищете, можно найти в списке here in the docs.

Что касается того, что делать с ними, это определенно зависит от вашего приложения. Лучше всего обрабатывать, по крайней мере, правильную работу и из-за фона, поэтому, по крайней мере, используйте методы для них и предпринимайте соответствующие действия в своем приложении.

Это очень распространенное приложение, которое просто запускает NSNotifications, как вы упомянули. Это вполне приемлемо в большинстве случаев.