Да, это несимвольный журнал аварий. Проблема в том, что вызов [-SKPaymentQueue addPayment:]
передал неверный указатель на платеж. Вот что говорит журнал:
Тип исключения: EXC_CRASH (SIGABRT)
blockquote>и
Информация, специфичная для приложения: [1111 ]
abort () с именем
blockquote>Это указывает на то, что некоторый фрагмент кода явно вызывал функцию для прерывания работы приложения. Это происходит потому, что операционная система обнаружила, что какой-то неверной информации была передана функции, и определила, что она не может продолжить работу с неверными данными, поэтому ее единственный выбор - отмена.
Обратный след показывает, какие функции были вызваны для прерывания:
Last Exception Backtrace: 0 CoreFoundation 0x1a4531ea4 __exceptionPreprocess + 228 1 libobjc.A.dylib 0x1a3701a50 objc_exception_throw + 55 2 CoreFoundation 0x1a4438484 +[NSException raise:format:] + 115 3 StoreKit 0x1b860fc14 -[SKPaymentQueue addPayment:] + 675 4 mapdocuments 0x100e5c1e8 0x100dfc000 + 393704 5 mapdocuments 0x100e65ddc 0x100dfc000 + 433628
Они в обратном порядке вызова. Поэтому некоторый код в приложении или библиотеке
mapdocuments
вызывается в рамкахStoreKit
, в частности, метод-[SKPaymentQueue addPayment:]
. Этот метод увидел, что переданное значение было недопустимым, и вызвало исключение. Исключение не было обнаружено при использовании блока@try
/@catch
, поэтому ОС прервала выполнение.К сожалению, поскольку символы не были предоставлены, мы не знаем точную строку, которая вызвала
-addPayment:
с неверными данными. Однако, если вы создали приложение, у вас должны быть символы для него, и я думаю, что можно символизировать аварийный журнал, используя их. Я сам этого не сделал.
Проверьте эту статью о dasBlonde: Управление версиями Контракты на Обслуживание WCF
Это перечисляет, какие изменения повредят существующие клиенты:
Эта статья Michele объясняет более подробно, как можно разработать контракты, чтобы быть более гибкими.
Я думаю, что лучшая практика должна думать о контрактах поскольку небьющийся, хм, контрактах. Не изменяйте их, после того как они публикуются. Достаточно легко создать новый контракт с изменениями, которые Вы хотите, и выставить новый контракт на новой конечной точке.