#iphone #ios #sdk #objective-c-blocks
#iPhone #iOS #sdk #objective-c-блоки
Вопрос:
поскольку я регулярно тестирую свое приложение на устройстве 3.1.3, мне пришлось добавить флаг компоновщика «-weak_library /usr / lib / libSystem.B.dylib» для поддержки там блоков. Это не было проблемой, пока я просто не начал добавлять некоторые коды gamecenter из образцов Apple. Только в симуляторе я затем столкнулся с мгновенным сбоем (EXC_BAD_ACCESS) где-то глубоко в библиотеках Apple, когда блок (даже пустой) передается в качестве обратного вызова аутентификации в кодировке GC. Когда я предоставляю nil в качестве обратного вызова, вход в систему GC работает нормально, и приложение продолжается. Он отлично работает на всех реальных устройствах (iPad, iPhone с iOS 4.3, iPod с iOS 3.1.3 — тогда, конечно, без GC). Когда я удаляю флаг слабой ссылки для компоновщика, он также будет работать без проблем в симуляторе. Кто-нибудь знает, что там происходит? Это неудовлетворительное решение для добавления флага компоновщика только каждый раз, когда я хочу выполнить развертывание на своем древнем iPod.
Спасибо, привычный
Комментарии:
1. Проблема заключается просто в ошибке в симуляторе iOS. Коды отлично работают на устройстве. Я заполнил радар в Apple bug reporter (radar: // 9470793)
Ответ №1:
Инженер Apple знал правильный ответ:
-weak_library /usr/lib/libSystem.B.dylib нарушает работу симулятора iOS. Вместо этого используйте -weak-lSystem.
Это действительно работает!