Apple отвергла меня, не знаю почему, или как это исправить - PullRequest
8 голосов
/ 16 января 2010

Итак, вот история, Apple недавно отклонила мое приложение, заявив, что оно сломалось на их телефонах (iPhone 3G и ipod touch 2g), и прислало мне два журнала аварий. Ни из чего я не могу понять.

Вот они.

 Incident Identifier: BA4382DD-DA6A-47F7-800D-43AD30919064
 CrashReporter Key:   53e41ca2a52f91affddc86f49ce9c4be851fcfd6
 OS Version:          iPhone OS 3.1.2 (7D11)
 Date:                2010-01-14 15:59:57 -0800

Free pages:        317
Wired pages:       11274
Purgeable pages:   0
Largest process:   iConicCars

Processes
         Name                 UUID                    Count resident pages
       amfid <b4f3e5a61456edf85b6ada59064ec311>      93
  iConicCars <851d264eb074e465891dcd67b67a8e79>    5928 (jettisoned) (active)
  MobileMail <0798395dde43ca46317db6e674dfbbfd>     503 (jettisoned)
 MobilePhone <82c9bd8583f4b09706a16b08e641a4b9>     464 (jettisoned)
     notifyd <d6b12a4e424e10e5ce91efd8d39f22af>      77
    BTServer <c940c4c7252113a7303cc1f7d1429c17>     253
  CommCenter <b1d6c4fe3ce2bc0374471196ab15b8d4>     313
 SpringBoard <c5c29b56a2bb445fc73203e03f67fa78>    1954 (active)
  accessoryd <32ceed5c3c32625ac23cd870f61364af>     107
     configd <aae411e8289912124271f109ceee8f85>     290
   fairplayd <cdce5393153c3d69d23c05de1d492bd4>     156
   mDNSResponder <db98efaea94329959789f73a16f9f46e>     123
mediaserverd <612fbbfa0546609cf6c6b13ae6f333cf>     767 (jettisoned)
   lockdownd <171865bfe3725c3d5047df8c00ed5d77>     294
     syslogd <1cb3e9f2375fad9e345bd16655be4a50>      66 (jettisoned)
     launchd <c5bc115d47313218505394f96770782a>      76

**End**

Incident Identifier: 8E52889B-0260-4AAD-A39C-FC170FB637D4
CrashReporter Key:   45d118e8a4be9b3163eab905af870f05dfddb12d
OS Version:          iPhone OS 3.1.2 (7D11)
Date:                2010-01-14 13:41:31 -0800

Free pages:        309
Wired pages:       12550
Purgeable pages:   0
Largest process:   iConicCars

Processes
         Name                 UUID                    Count resident pages
      iConicCars <851d264eb074e465891dcd67b67a8e79>    5641 (jettisoned) (active)
       SCHelper <b87bd080a670f9512426e8721dc1f03c>     103
            misd <a41e5d5f4b8922ab272c55df84aec4fd>     140
    installd <620ede129454bcd824f0b6cec13b15d3>     212
 SpringBoard <c5c29b56a2bb445fc73203e03f67fa78>    1545 (jettisoned) (active)
        iapd <fea164e93479b90e1dd39a293dd3865c>     251 (jettisoned)
     syslogd <1cb3e9f2375fad9e345bd16655be4a50>      83 (jettisoned)
mediaserverd <612fbbfa0546609cf6c6b13ae6f333cf>     302 (jettisoned)
    BTServer <c940c4c7252113a7303cc1f7d1429c17>     345
   lockdownd <171865bfe3725c3d5047df8c00ed5d77>     279
     notifyd <d6b12a4e424e10e5ce91efd8d39f22af>     104
  CommCenter <b1d6c4fe3ce2bc0374471196ab15b8d4>     151
     configd <aae411e8289912124271f109ceee8f85>     264
   fairplayd <cdce5393153c3d69d23c05de1d492bd4>     517
   mDNSResponder <db98efaea94329959789f73a16f9f46e>     100
     launchd <c5bc115d47313218505394f96770782a>      67

**End**

сказали, что даже после перезагрузки разницы нет. Вот кикер, он отлично работает на моем iPhone 3GS и в симуляторе без утечек памяти.

Итак, что я делаю?

UPDATE:

Вход в симулятор [Сессия началась в 2010-01-16 20:01:44 +1300.] GNU gdb 6.3.50-20050815 (версия Apple, gdb-1346) (пт, 18 сентября 20:40:51 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB - это бесплатное программное обеспечение, на которое распространяется стандартная общественная лицензия GNU, и вы добро пожаловать изменить его и / или распространять его копии при определенных условиях. Введите «показать копирование», чтобы увидеть условия. На GDB нет абсолютно никаких гарантий. Тип "показать гарантию" для деталей. Эта GDB была настроена как "x86_64-apple-darwin" .sharedlibrary apply-load-rules all Присоединение к процессу 1152. dyld: не удалось загрузить вставленную библиотеку: /usr/lib/libgmalloc.dylib

Средство форматирования данных временно недоступно, повторная попытка после продолжения. (В настоящее время не удается вызвать загрузчик, он заблокирован.) предупреждение: не удалось найти минимальный символ для _sigtramp - обратные трассировки могут быть ненадежными Невозможно получить доступ к памяти по адресу 0x0 Невозможно получить доступ к памяти по адресу 0x0 (ГБД)

Ответы [ 5 ]

5 голосов
/ 16 января 2010

Как уже говорили другие, вы используете слишком много памяти.

Если вы используете несколько страниц контроллеров представления, попробуйте этот простой тест - запустите приложение с помощью инструмента ObjectAlloc. Нажмите на что-нибудь, чтобы вызвать подпредставление, вы должны увидеть увеличение своей памяти - теперь отклоните это представление и вернитесь к основному, память должна уменьшиться. Если это не так, то это ваша проблема (или, в любом случае, одна из них, но это очень хорошая отправная точка).

Чтобы попытаться отследить это, установите точки останова в dealloc для каждого из ваших контроллеров представления и посмотрите, что на самом деле вызывается. Для контроллеров представления, которые не были освобождены так, как вы ожидаете, в ObjectAlloc вы можете увидеть, где было выпущено каждое сохранение для объекта, и решить, что сохранило объект, когда он не должен был этого делать.

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

Также, если вы используете много изображений, рассмотрите возможность изменения их размера до нужного вам размера вместо того, чтобы начинать с гораздо большего размера и масштабирования. Использование такого большого объема памяти должно быть связано с использованием изображений, а не с их освобождением. Утечки ничего не сообщат, если у вас все еще есть ссылки на память, которую вы сохраняете.

Кроме того, купите более старый Touch для тестирования.

5 голосов
/ 16 января 2010

Смотрите "свободные страницы: 309"?не хорошо, означает, что вы используете кучу памяти, а затем, когда все это используется, происходит сбой.А очищаемые страницы = 0 - это память, которую нельзя восстановить, поэтому это проблема с памятью.

Выполните «Построить и проанализировать» и запустить «Утечки», чтобы найти утечки памяти и места, которые вы можете использовать более эффективно.

3 голосов
/ 16 января 2010

Ваш iPhone 3GS и симулятор имеют гораздо больше памяти, чем другие устройства iPhone OS.Для работы на всех устройствах необходимо использовать не более 20 МБ памяти.

3 голосов
/ 16 января 2010

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

2 голосов
/ 16 января 2010

Ваше приложение использует слишком много памяти. Он никогда не будет работать на старых устройствах с 128 МБ ОЗУ.

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