Сбои iPad, которые не происходят на iPhone или iPod Touch
Кто-нибудь сталкивался с трудностями в получении надежного приложения для iPhone, работающего на iPad? У меня сложилось впечатление, что приложения для iPhone будут работать без проблем на iPad. Мы испытываем сбои (не прерывистые - в том же месте, в одно и то же время), которых мы никогда не получали на iPhone или iPod Touch. Я стал подозревать, что сбои связаны с управлением памятью, но даже если так, почему только на iPad?
2010-05-17 10:19:06.474 ASSIST[82:207] *** Terminating app due to uncaught
exception 'NSUnknownKeyException', reason: '[<UISectionRowData
0x6041480> valueForUndefinedKey:]: this class is not key value coding-compliant
for the key deliveryDate.'
2010-05-17 10:19:06.481 ASSIST[82:207] Stack: (
852041337,
861292157,
852040861,
850755255,
850750995,
850758945,
81279,
123007,
126693,
149141,
851599725,
827486573,
827486477,
827486431,
827485745,
827487359,
827454123,
851903137,
851590065,
851588321,
819339483,
819339655,
827151561,
827144691,
9461,
9324
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
2 ответа
Похоже, проблема с памятью. Возможно, вам следует использовать NSZombie, чтобы проверить, что не так, и использовать опцию "Построить и проанализировать", чтобы статически проверять любые проблемы с управлением памятью.
О том, почему iPad дает сбой, а iPhone нет - помните, что iPad работает на iPhoneOS 3.2, а iPhone все еще работает на 3.1. Внутренние органы могут быть изменены очень много. Конечно, в "режиме симуляции iPhone" на iPad работает код 3.2.
Следовательно, возможно, у вас есть ошибка управления памятью в оригинальном программном обеспечении. Объект получил -retain
редактировалось внутри в старой прошивке 3.1 (например, добавлено в NSArray). Но код Apple, возможно, изменился так, что -retain
больше не нужен и выставлен баг.
[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key deliveryDate
подразумевает возможную константу, которая не относится к iPad. Попробуйте использовать NSLog()
отследить глючный код.