приложение для взлома iphone iOS4 - PullRequest
0 голосов
/ 23 июня 2010

У меня есть приложение, которое работает нормально с момента его запуска более года назад.

Я разработал его изначально на iphone iOS 2.2.1, протестировал и продолжал продавать его до версии 3.2 без проблем.

Теперь не удается запустить с iOS 4.

приложение использует нестандартный размер для UIPickerView (я не думаю, что это проблема, но просто упомяните об этом, так как вы увидите некоторые жалобы в консоливыход).Это также дает ранее не сообщенные NSAutoreleasePool предупреждения.

Но виновник, кажется, при изменении размера интерфейса к новому разрешению экрана iphone (по крайней мере, что я получаю из консоли)

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

Во-первых, это вывод консоли при сборке и запуске с XCODE3.2.3 и BASE SDK 3.2, работает без проблем

2010-06-22 23: 25: 55,619 металлов и материалов [82956: 207] ******* Состояние доступности изменено: на 2010-06-22 23: 25: 55.710 металлоизделия и материалы [82956: 207] ********** Загрузка AX для: xxxxxxxxx

Но попытка запустить его с помощью iOS4 дает такую ​​красоту:

2010-06-22 23: 15: 52,488 металлы и материалы [80149: 207] ******* Изменен статус доступности: вкл.
2010-06-22 23: 15: 52,546 металлы и материалы [80149: 207] ********** Загрузка AX для: XXXXXXX ************
2010-06-22 23: 15: 53.003 металлы и материалы [80149: 207] * - [NSAutoreleasePool release]: Этот пул уже выпущен, не истощайте его (двойной выпуск).
2010-06-22 23: 15: 53.005 Metallsandmaterials [80149: 207] *
- [Выпуск NSAutoreleasePool]: этот пул имеетуже выпущен, не истощать его (двойной выпуск).
2010-06-22 23: 15: 53.008 металл и материалы [80149: 207] - [UIPickerView setFrame:]: недопустимое значение высоты 50,0, прикрепленное к 162,0

Прямо здесь![UIIageView scale]

2010-06-22 23: 15: 53.011 металл и материалы [80149: 207] - [UIImageView scale]: нераспознанный селектор, отправленный экземпляру 0x5ac47a0
2010-06-22 23: 15: 53.013 metalandmaterials [80149: 207] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [UIImageView scale]: нераспознанный селектор, отправленный экземпляру 0x5ac47a0'

Вызов стека при первом броске:
(
0 CoreFoundation 0x025f5919 exceptionPreprocess + 185
1 libobjc.A.dylib 0x027435de objc_exception_throw + 47
2 CoreFoundation 0x025f742b - [NSObjectNoseBject:] + 187
3 CoreFoundation 0x02567116 ___ forwarding_
+ 966
4 CoreFoundation 0x02566cd2 _CF_forwarding_prep_0 + 50
5 UIKit 0x0039a8e3 - [UIImageViewmage setImage:] +39 * UIT: UI] UI: UE: UIT: UIT UI: UI_Mit UI.+ 161
7 UIKit 0x05f286ce - [UIImageViewAccessibility (SafeCategory) initWithImage:] + 70
8 metalandmaterials 0x0000bf09 - [TVCResults init] + 1841
9 металлов и материалов 0x00002b8c - [UIVCalcHolder init] + 258
10 металлов и материалов 0x00002758 - [CalcTestAppDelegate applicationDidFinish PayLage:] + 1252
12 UIKit 0x002d99a1 - [UIApplication _runWithURL: полезная нагрузка: запускОриентация: statusBarStyle: statusBarHidden:] + 346
13 UIKit 0x002e3452 - [UIApplication handleEvent: withNewEvent:] + 1958
14 UIKit 0x002dc074 - [UIApplication sendEvent:] + 71
15 UIKit 0x002e0ac4 _UIApplicationHandleEvent + 7495
16 графических сервисов 0x02de1afa PurpleEventCallback + 1578
17 CoreFoundation 0x025d6dc4 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52
18 CoreFoundation 0x02537737 __CFRunLoopDoSource1 + 215
19 CoreFoundation 0x025349c3 __CFRunLoopRun + 979
20 CoreFoundation 0x02534280 CFRunLoopRunSpecific + 208
21 CoreFoundation 0x025341a1 CFRunLoopRunInMode + 97
22 UIKit 0x002d9226 - [UIApplication _run] + 625
23 UIKit 0x002e4b58 UIApplicationMain + 1160
24 металла и материалы 0x000024ac основной + 230
25 металлов и материалов 0x000023bd начало + 53
26 ??? 0x00000001 0x0 + 1
) прекращение вызова после выброса экземпляра 'NSException'
Программа получила сигнал: «SIGABRT».
убить
убить

Итак, этот scale метод является новым для uiimageview? почему бы это не сработало? кто-нибудь уже сталкивался с этим?

ЛЮБАЯ ПОМОЩЬ ОЧЕНЬ ЦЕНА

С наилучшими пожеланиями
Дэвид

Ответы [ 4 ]

3 голосов
/ 23 июня 2010

Вы получаете сообщение "xxxxxx не распознает селектор yyyyyy" обычно, когда объект был освобожден, но вы все еще пытаетесь его использовать. В этот момент, поскольку память случайна, система считает, что это какой-то другой случайный тип объекта (например, UIImage). Таким образом, это красная сельдь, знак того, что что-то не так, и вы чрезмерно отпускаете объект.

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

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

0 голосов
/ 07 апреля 2011

Могу ли я сказать, что вы где-то устанавливаете свойство image для imageView для другого UIImageView (в отличие от UIImage)?

Ведь UIImageView не отвечает на: scale, но UIImage делает.

0 голосов
/ 26 июня 2010

Хорошо, я оставил, если при добавлении шкалы - (void) к подклассу UIImageView и использовании этого нового класса.Протестировал, отлично работает на 2.2.1, 3.2 и ios4, как на симуляторе, iphone touch 3g с ios4 и ipad с ios3.2.

Мне все еще нужно достать iphone4 и посмотреть, не возникает ли странная проблема с макетом (я все еще верю, что проблемы возникли, когда ОС хочет взорвать все на новом дисплее сетчатки).

Из-за отсутствия в США все будет немного сложнее

0 голосов
/ 23 июня 2010

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

Ваша вторая проблема - notNotRecognizeSelector говорит вам, что вызываемый селектор не существует (или потерял область видимости). Я бы использовал отладчик, чтобы вы снова могли отслеживать выполнение этого кода.

...