2013-02-12 2 views
0

Я получаю странное поведение, когда снова открываю приложение после того, как оно теряет фокус с домашней кнопки. На симуляторе экран приложения становится черным в течение 5 секунд или более, прежде чем приложение будет возобновлено. На тестовом устройстве приложение либо выполняет длительную задержку, либо полностью завершает работу и сбрасывается в исходное состояние. Я поместил отладочные комментарии NSLog в «applicationWillEnterForeground» и «applicationDidBecomeActive», но они появляются только после длительной задержки, поэтому я предполагаю, что ничто в этих функциях не вызывает эту задержку.Ошибка приложения при восстановлении фокуса

Я использую следующие компоненты в моей программе: * панель вкладок контроллер * 2 Таймеры, комплект карт * Гнездо IP потоков * 24 ViewControllers нанизанные на раскадровке. * довольно много фоновых изображений и кнопок изображений

Я бы с радостью отправил код, если я знаю, какие части программы вызывают эту ошибку, но так как я не знаю. Кто-нибудь еще испытывал такую ​​ошибку? У любого из перечисленных мной компонентов есть история возникновения подобных ошибок?

Я был довольно развит, когда эта ошибка была обнаружена, и я не тестировал потерю фокуса через домашнюю кнопку во время процесса инкрементного развития. Другие, меньшие проекты (которые использовали сокеты и таймеры) не пострадали от одной и той же ошибки на одном тестовом оборудовании.

Я использую «applicationWillResignActive», чтобы отключить таймеры и закрыть потоки. Я использую «applicationDidBecomeActive» для перезапуска таймеров и повторного открытия потоков. Задержка происходит до запуска «applicationWillEnterForeground» и «applicationDidBecomeActive». Далее я попытался отключить код, который инициирует потоки и таймеры, но это не повлияло на ошибку.

Я использую xCode4.4.1, ios6 и создаю исключительно для iPads.

+0

Любой код, который задает начальные переменные, должен находиться в 'viewDidLoad' или' awakeFromNib' ... Похоже, вы поместили свой исходный код настройки переменной в нечто другое, которое запускается, когда приложение «восстанавливает» фокус. .. где бы вы ни устанавливали свои переменные, я бы переместил их в 'viewDidLoad'. –

+0

Я забыл упомянуть, что приложение загружается менее чем за 1 секунду, это всего лишь процесс перезагрузки, который висит на протяжении более пяти секунд или полностью сбивается –

ответ

0

Возможно, что отладчик играет трюки своим умом, когда он показывает, что вы набрали точку останова и код выполнения приложенияWillEnterForeground. Я предлагаю вам передать ваш последний код в исходный элемент управления и начать удалять разделы по одному, пока вы не увидите, что поведение уходит.

+0

Я боялся, что мне придется это сделать, я разместил здесь, чтобы узнать, может ли кто-нибудь узкую часть той части программы, которую я должен удалить первым. Говоря об удалении, нужно ли мне удалять вещи в доске объявлений, или я могу просто сделать их недоступными. То же самое касается классов в коде, могу ли я просто прокомментировать все ссылки на него или полностью удалить исходный файл? –

+0

лично я бы начал сначала комментировать таймеры и объекты на основе кода. У меня нет большого опыта работы с досками объявлений, но вот трюк, который я использовал в своем приложении, чтобы понять состояние просмотров: Поместите точку останова в viewdidload или другую функцию «просмотр жизненного цикла». затем введите это в отладчик «po [[self navigationController] viewControllers]». Это покажет вам все стековые контроллеры. Сделайте это в разных частях и посмотрите, влияет ли количество просмотров на время загрузки. – portforwardpodcast

+0

. Я нашел проблему, на applicationWillResignActive. Я написал кучу данных в NSUserDefaults. Это привело к тому, что applicationWillResignActive не завершился до того, как приложение отключилось и вызвало перезагрузку. Приложение теперь перезагружается успешно, когда вызов NSUserDefaults отключен. Я собираюсь переместить эту функцию на кнопку сохранения, которую пользователь может ударить, пока приложение запущено.Благодарим вас за поддержку portforwardpodcast. –

Смежные вопросы