Прерывистое замораживание на iPad - PullRequest
2 голосов
/ 13 июля 2010

У меня есть приложение для iPad, которое с первого раза прекрасно работает и работает.Но если я выхожу из приложения и открываю его снова, интерфейс полностью не отвечает.Если я выхожу и открываюсь в другой раз, он никогда не выходит за пределы заставки.

Что странно, если я подожду минуту или две, прежде чем снова открыть его, он всегда работает нормально.

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

Спасибо,

Люк

Редактировать: вот код, который я использую для NSUserDefaults - можетв этом проблема?

В viewDidLoad в моем контроллере основного вида:

bgnum = [prefs integerForKey:@"bgnum"];
menuVisible = [prefs boolForKey:@"menuVisible"];
songTitles = [[NSMutableArray alloc] initWithArray:[prefs arrayForKey:@"songTitles"]];
numberOfSongs = [prefs integerForKey:@"numberOfSongs"];

В viewWillDisappear:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

[prefs setBool:menuVisible forKey:@"menuVisible"];
[prefs setInteger:bgnum forKey:@"bgnum"];
[prefs setObject:songTitles forKey:@"songTitles"];
[prefs setInteger:numberOfSongs forKey:@"numberOfSongs"];

[prefs synchronize];

Ответы [ 3 ]

1 голос
/ 14 июля 2010

Я бы посмотрел на то, что происходит в вашем коде инициализации, loadView, didFinishLaunching и т. Д., И проследил его. Легко получить 3 или 4 метода глубоко в этом материале и делать слишком много там, когда некоторые из них должны быть ленивыми. Без дополнительной информации или какого-либо примера кода это все дикие догадки. Одно из таких предположений - пользовательские настройки по умолчанию или что-то, что вы загружаете из файла или словаря заранее? Я мог видеть, как что-то там может циклически проходить через несколько состояний.

0 голосов
/ 14 июля 2010

Существует большая разница между «выходом из приложения и его повторным открытием», что в контексте подразумевает, что вы делаете это довольно быстро, и «ожидание минуты или двух».

У меня довольно большое приложение, которое яразработка, для которой обычно требуется несколько секунд, чтобы «разгрузиться» на iPad, что приводит к быстрому выходу и повторному входу, в результате чего приложение отображается в частично настроенном состоянии и вызывает необычное поведение.

Это может бытьиз-за того факта, что ваше приложение еще не полностью освобождает и закрыло свои потоки, и, таким образом, когда вы снова быстро его запустите, поток будет возобновлен (и на 3.2 или более ранней версии будет нестабильным, поскольку он уже начал убивать себя).

Сделайте несколько таймингов ... посмотрите, что является порогом для "это дает сбой" и "это работает".Если прошло больше 10 секунд, то я бы сказал, что что-то не так.Меньше, и вы могли видеть то, что я только что описал,

0 голосов
/ 13 июля 2010

Когда устройство подключено, запустите приложение в режиме отладки из xCode и выйдите из приложения. Теперь отключите USB-кабель и снова запустите приложение - оно полностью заморожено? Если вы поворачиваете устройство, меняется ли ориентация вашего взгляда? После завершения работы приложения снова подключите USB и перейдите в xCode-> Window-> Organizer.

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

Однажды у меня была похожая проблема, когда я использовал NSZombieEnabled в качестве активного аргумента в моем исполняемом файле, так что это тоже стоило бы исследовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...