Я почтительно не согласен со всеми здесь:
I generally try and code as if the app or phone could crash at any point.
Ну, убедитесь, что ваше приложение краш-доказательство, и вы спасете себя бесполезные вызовы методов. Они действительно не будут влиять на производительность, но это просто громоздко и не приятно читать.
Вы хотите, чтобы ваш код был чистым, маленьким и эффективным.
Этот вопрос помогает:
When does the user see the badge?
Ну, когда он выходит из приложения. Есть ваш ответ. Обновите значок, когда он вот-вот сможет его увидеть.
Вы избегаете немного накладных расходов и, что более важно, работаете, когда это необходимо, а не «все время на всякий случай, когда вы работали неправильно где-то в другом месте». Я настаиваю на этом: не исправьте ошибки, совершив другие ошибки.
В конце концов вы будете отслеживать свой номер значка локально (возможно, NSUserDefaults
?) И обновить его в AppDelegate
при вводе фона или выходе из приложения :) И вы золотые!
Отличный ответ, хотя я тоже. Фактически я зарегистрировал наблюдателя на applicationWillEnterBackground, поэтому я могу сохранить элементы списка дел из моего ViewController, вместо того, чтобы ссылаться на них как-то в моем AppDelegate. Я сделаю то же самое и для номера значка. Благодаря! –
Если вы сделали даже самое простое приложение, вы обнаружите, что основные API, на которые вы полагаетесь, могут быть нестабильными между новыми выпусками. Пользователь может также принудительно завершить работу в любое время. Надежное отношение на ранней стадии защитит вас от этой ситуации. – GilesDMiddleton