Построение XCode: идентичные конфигурации ведут себя по-разному - PullRequest
0 голосов
/ 14 июля 2010

У меня сверхъестественная проблема:

Я получаю сбой (EXC_BAD_ACCESS) при запуске моего приложения с Release в качестве активной конфигурации на моем iPhone 3.1.3 3G. (хорошо работает в конфигурации отладки или в симуляторе, отлично работает на устройстве под управлением iOS4).

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

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

Если кто-то хочет меня просветить, я бьюсь головой о стену.

Спасибо

ПРИМЕЧАНИЕ: базовый SDK - 4,0, а цель развертывания - 3,0

.

Ответы [ 3 ]

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

Вы должны проверить на утечки памяти и обработку предупреждений памяти. Объем памяти, вероятно, является самой большой разницей между средами, которые вы цитируете.

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

Попытайтесь точно определить вашу аварию и расследовать оттуда. NSLog все сделал ReceiveMemoryWarnings. Ищите места, где вы делали предположения, например, о статической информации.

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

Я исправил проблему.

Это была ошибка библиотеки. Я обновил ветку master, поддерживающую iOS 4, но, к сожалению, это нарушает поддержку 3.1.3. (вещь, которая не документирована, по-видимому)

В любом случае я нашел это сообщение , которое помогло мне определить проблему. Мне просто пришлось применить этот патч , и тогда я смог запустить свой проект на устройствах 3.1.3 и iOS4

Странная вещь: почему он зависал, когда я инициализировал UIActionSheet (в строке кода, не связанной вообще с библиотекой Three20)?

Спасибо за вашу помощь.

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

Возможно, у вас есть неназначенная локальная переменная.Объект-C следует как C делает это.Таким образом, в версии выпуска вы не можете предполагать, что любая локальная переменная инициализируется равной 0, тогда как в режиме отладки вы можете (в этом случае я бы угадал указатель).Wall) для предупреждения компилятора на этих страницах руководства Apple gcc Примечание работает только при включенном оптимизаторе.

...