2010-06-27 3 views
1

На всех проверенных нами iPhone (мы проверили), которые были обновлены до iOS4, наше приложение ведет себя по-другому (багги), чем в предыдущей версии ОС (3.1.3). Первая и самая большая проблема заключается в том, что на 3G (но не на 3GS) любое UIAlertView зависает от приложения - на самом деле это похоже на то, что потери в приложении теряют UIAlertView, но UIAlertView тоже не получает фокуса. Я должен отметить, что мое приложение использует OpenGL ES 1.1.iOS4 разбивает мое приложение

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

Даже это замораживает приложение:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Please read help before using Facebook/Twitter/Flickr" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil, nil]; 
[alert show]; 
[alert release]; 

Любой человек, имеющий какие-либо идеи?

Редактировать: Просто хочу сообщить, что мы исправили все проблемы. Некоторые проблемы были обнаружены, тщательно проверяя наш код и находив то, что мы сделали неправильно. В iOS3 одни и те же ошибки не заметны, потому что сама ОС быстрее, но искажает приложение до смерти в iOS4. Кроме того, некоторые переменные необходимо было инициализировать по умолчанию (пример - int x = 0, вместо int x;), а затем все стало работать, как ожидалось.

+0

Что вы показываете в своем UIAlertView? Он показывает что-то связанное числом? Как насчет выбора цвета? Я бы подумал об ОС и о том, как она относится к типам данных здесь. (В частности, разные типы номеров.) – Moshe

+0

Даже это зависает от приложения: UIAlertView * alert = [[UIAlertView alloc] initWithTitle: nil message: @ «Пожалуйста, прочитайте справку перед использованием Facebook/Twitter/Flickr» делегат: self cancelButtonTitle: @ " OK "otherButtonTitles: nil, nil]; [alert show]; [предупреждение]; – duke4e

+0

Уверены ли вы, что вы не возитесь с внутренней иерархией представлений UIAlertView или других элементов пользовательского интерфейса системы? Эта иерархия не может оставаться неизменной между обновлениями ОС, и такие изменения, как это, нарушили другие приложения после обновлений ОС (именно поэтому Apple решительно отговаривает это). –

ответ

1

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

+0

Да, но проблема в том, что приборы/утечки все еще не сообщают о каких-либо странностях. – duke4e

+0

@ duke4e - Просто потому, что инструменты не сразу показывают проблему, это не значит, что ее нет. Кроме того, не просто искать утечки в инструменте «Утечки», убедитесь, что общее использование памяти не постоянно увеличивается в Memory Monitor и ищет другое странное поведение. –

1

Я думаю, что один «ноль» выполнит эту работу для «otherButtonTitles». Может ли вторая вызвать крах?

Если нет, какие ошибки сообщаются на вашей консоли во время сбоя?

+0

Это совершенно правильный аргумент (второй ниль действует как контролер для списка), и на самом деле какой-то новый компилятор выдает предупреждение, если вы этого не сделаете. –

0

Мы обнаружили, что iOS 4 намного более агрессивен в вопросах управления памятью по сравнению с iOS 3. Это имеет большое значение с точки зрения дизайна, поскольку Apple теперь должна беспокоиться о большом количестве приложений, потенциально работающих на в то же время. У нас было большое количество ошибок при сбое, вызванных плохим управлением памятью, которые вообще не отображались в iOS 3.

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