Странная проблема из-за поддержки блокировки в iOS 3.1.3

поскольку я регулярно тестирую свое приложение на устройстве 3.1.3, мне пришлось добавить флаг компоновщика «-weak_library /usr/lib/libSystem.B.dylib» для поддержки там блоков. Это не было проблемой, пока я просто не начал добавлять код для игрового центра из образцов Apple. Только в симуляторе я столкнулся с мгновенным сбоем (EXC_BAD_ACCESS) где-то глубоко в библиотеках Apple, когда блок (даже пустой) передается в качестве обратного вызова аутентификации в кодировке GC. Когда я указываю nil в качестве обратного вызова, вход в систему GC работает нормально, и приложение продолжает работу. Хотя он отлично работает на всех реальных устройствах (iPad, iPhone с iOS 4.3, iPod с iOS 3.1.3 - конечно, тогда без GC). Когда я удаляю флаг слабой ссылки для компоновщика, он также будет работать без проблем в симуляторе. Кто-нибудь знает, что там происходит? Это не удовлетворительное решение - добавлять флаг компоновщика только каждый раз, когда я хочу развернуть его на моем старом iPod.

Спасибо, хабитоти


person habitoti    schedule 12.05.2011    source источник
comment
Проблема просто в ошибке в симуляторе iOS. Коды отлично работают на устройстве. Я заполнил радар репортера ошибок Apple (радар: // 9470793)   -  person gcamp    schedule 31.05.2011


Ответы (1)


Инженер Apple знал правильный ответ:

-weak_library /usr/lib/libSystem.B.dylib нарушает работу симулятора iOS. Вместо этого используйте -weak-lSystem.

Это действительно работает!

person habitoti    schedule 04.06.2011