Я выполняю XCode 3.2.3 с iOS 4.0 SDK. Я создал свое приложение с Основой SDK = iphoneos4.0, Активный SDK = iphoneos4.0, Цель Развертывания = 3.1.3, и Архитектура = стандарт (arm6 arm7). Компилятор = GCC 4.2. Насколько я понимаю это - корректный способ создать приложение и для iOS 4 и для 3.
Выполнение приложения, прекрасное на устройствах рабочий iOS 4. Но это отказывает на запуске, когда Вы пытаетесь выполнить его на устройстве с iOS 3.1.3 (1G iPod Touch):
dyld: Symbol not found: __NSConcreteStackBlock
Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Expected in: /usr/lib/libSystem.B.dylib
Это, кажется, проблема с довольно "низкоуровневой" динамически подключаемой библиотекой ПЕРЕД моим основным (), функция даже вызвана. Я даже попытался перезапустить устройство, и т.д., без удачи. Вот часть крешлог:
Process: MyApp [60]
Path: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2010-07-22 17:16:17.942 -0400
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread: 0
Dyld Error Message:
Symbol not found: __NSConcreteStackBlock
Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
Expected in: /usr/lib/libSystem.B.dylib
Dyld Version: 149
Binary Images:
0x1000 - 0x80fff +MyApp armv6 <d5f0ff6f233b4b034c222c16438c88d9> /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp
0x2fe00000 - 0x2fe26fff dyld armv6 <544395a4b5546114b878d5131a84fd7f> /usr/lib/dyld
0x30410000 - 0x30536fff libSystem.B.dylib armv6 <0373fd64e915a17160732b29d343f95f> /usr/lib/libSystem.B.dylib
Спасибо за любой совет!
Бен Готлиб вчера заметил, что если вы используете блоки где-либо в вашем приложении, то при сборке компилятором LLVM вы увидите крах, подобный этому, на ОС до версии 4.0. Чтобы обойти эту проблему, вы можете указать флаг компоновщика -weak-lSystem
в настройках сборки Xcode.