Сбои, возможно связанные с Restkit - PullRequest
0 голосов
/ 21 июня 2011

Я менеджер проекта, пытаюсь помочь с моими разработчиками;

У нас была сборка, которая была готова к отправке; без сбоев и тестирование проводилось на iPad. На следующий день, когда мы начали тестировать его на iPod и iPhone 3G, мы заметили множество аварий. Мы переустанавливали сборку на iPad и низко, и вот там тоже показался груз аварий.

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

Сбои происходят в основном на одном конкретном экране приложения, сбои, кажется, не являются специфическими для действия, которое мы можем сказать. Мы подключаемся к стороннему API для заполнения данных на экране и используем Restkit. Иногда кажется, что сбои происходят из-за Restkit. Ниже приведен пример журнала ошибок, который мы получили:

0   libobjc.A.dylib                0x34f70ca4 objc_msgSend + 28
1   CoreFoundation                 0x325ae0b8 __CFBasicHashStandardRetainValue + 8
2   CoreFoundation                 0x325abb30 __CFBasicHashReplaceValue + 44
3   CoreFoundation                 0x32505f98 CFDictionarySetValue + 68
4   CoreFoundation                 0x3250c94e -[__NSCFDictionary setObject:forKey:] + 54
5   Foundation                     0x34d8a31a -[NSMutableDictionary(NSKeyValueCoding) setValue:forKey:] + 10
6   nameofapp                      0x000ae958 -[RKClient setValue:forHTTPHeaderField:] (RKClient.m:173)
7   nameofapp                      0x000086ae -[WebServer addCustomHeaders:] (WebServer.m:140)
8   nameofapp                      0x000088ea -[WebServer getDoD:objectTarget:] (WebServer.m:197)

и

WebServer.m:140  [[objectManager client] setValue:@"text/json" 
                               forHTTPHeaderField:@"X-ZFWS-Accept"];

1 Ответ

0 голосов
/ 01 августа 2011

Две вещи. Во-первых, нам нужно больше информации.Что говорит остальная часть этого аварийного журнала?Во-вторых, что не менее важно, если вы используете RestKit (или что-то еще) на iPhone 3G, вы должны абсолютно точно сделать так, чтобы "Compile for Thumb" был выключен выключен для архитектуры ARMv6.Я заметил, что многие из моих загадочных сбоев исчезли, просто убедившись, что «Compile for Thumb» включен для ARMv7, но выключен для ARMv6.IPhone 3G (и, возможно, ваш iPod) использует архитектуру ARMv6, которая не поддерживает Thumb.Когда Thumb включен для v6, невозможно сказать, как он будет работать (или нет), потому что чип получает плохие инструкции.Однако не просто отключите Thumb, потому что вы получаете значительный скачок скорости на новых устройствах, таких как iPhone 4 и iPad.

В ваших проектах Xcode откройте настройки сборки и нажмите на заголовок для«Скомпилируйте для большого пальца», затем выберите в меню «Передача» опцию «Добавить условие настройки сборки».Измените «Любой SDK» на «Любая iOS» и измените «Любую архитектуру» на «ARMv6», затем убедитесь, что «Значение» не отмечено.Теперь сделайте то же самое, создав еще одно условие сборки для ARMv7, и выберите / отметьте значение для включения.

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

...