2015-08-25 5 views
8

Впервые я смог скомпилировать свое приложение в Xcode 7 (не удалось в бета-версии 4 и 5). Итак, это хороший прогресс, я думаю.Xcode 7 Beta 6, dyld ___NSArray0__ crash

Однако, когда я загрузить мое приложение на моем iPhone 6, прошивка 8.4.1, он врезался в отладчике со следующим сообщением:

dyld: Символ не найден: _NSArray0 Реферированы от:/частного /var/mobile/Containers/Bundle/Application/0294DF62-AE80-485D-BB11-8C3A5D39777D/Boxtiq.app/Boxtiq Ожидается в: /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation in/private/var/mobile /Containers/Bundle/Application/0294DF62-AE80-485D-BB11-8C3A5D39777D/Boxtiq.app/Boxtiq

Это что-то делать с порядком связывания библиотек? С нетерпением ждем некоторых советов.

Спасибо!

+0

«Когда я загружаю приложение на свой iPhone 6, iOS 8.4.1« Вы не можете запускать на устройстве iOS 8 из бета-версии Xcode 7. – matt

ответ

1

Я столкнулся с тем же самым крахом, что и Xcode 7.0 beta 6 на устройстве с первой установленной бета-версией iOS 9, однако при использовании симулятора авария не возникала.

После обновления моего iPhone до iOS 9 beta 5 авария остановилась.

+0

Спасибо, Джонни и Мэтт. Как бы вы предложили сделать тест обратной совместимости. В настоящее время я предполагаю, что новые пользователи iOS8 будут искать приложение и будут устанавливать наше приложение, которое будет аварийно завершено. Мысли? – Sachin

+0

Я знаю, что теперь это возможно для вас, но я держу два устройства: одно с iOS 8 и одно с iOS 9 на нем. У меня также установлены как Xcode 6.4, так и Xcode 7.0 beta, поэтому я могу продолжить разработку для обеих версий. – johnnyg17

+0

Кроме того, яблоко не позволит пользователю iOS 8 загружать приложение, ориентированное на iOS 9, поэтому вы должны только беспокоиться о версии на уровне или выше целевого развертывания. Я почти уверен, что яблоко позволит им загрузить версию iOS 8 даже после выпуска версии iOS 9, если у вас уже есть один доступный в магазине приложений. – johnnyg17

2

У меня была такая же ошибка при компиляции проекта mac os после обновления версии Xcode для версии 7.0 GM (7A218). Xcode 7 имеет только 10,11 sdk (вы можете проверить это в /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs, где это MacOSX10.11.sdk).

Во время компиляции Xcode свяжет рамку из /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks, но во время выполнения из/System/Library/Frameworks /, как я полагаю.

У меня OS X 10.10.5 (14F27) на mac. Либо у меня есть моя статическая библиотека, которую я создал по xcode 7 (MacOSX10.11.sdk, как вы помните ранее), с которой я связан с моим проектом после. После запуска я получил ошибку во время выполнения, как

dyld: Символ не найден: _NSArray0

Я думаю, это потому, что библиотека была собрана с CoreFoundation.framework из Mac OS SDK 10.11, но во время выполнения было связанных с CoreFoundation.framework из/System/Library/Frameworks/где версия 10.10 (как версия ОС).

Как я исправил это. У моего друга есть xcode 6, я взял mac os sdk 10.10 оттуда (как вы помните в /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs, имя MacOSX10.10.sdk) и добавил его к моему Xcode. Затем я перестроил свою статическую библиотеку с помощью 10.10 sdk (вы можете скомпилировать из cli с параметром «-sdk macosx10.10» или установить build sdk в настройках сборки => Base SDK). После того, как проблема решена.

Я предполагаю, что для iOS вы можете применить ту же стратегию.

22

Я исправил это, поставив это в подклик. Платформа: ios, '8.4' Не нужно обновлять устройство до iOS 9 и проиграть при тестировании 8.4.

+2

Это сработало для меня. Лучше, чем принятый ответ, так как я не хотел обновлять свое устройство. –

+1

Это исправление работает. Корень проблемы, о которой вы говорили, - это параметр «установить цель». вы должны также обновить цель развертывания в проекте с интегрированными модулями. Чтобы заставить его запускать 'pod update' для реинтеграции контейнеров в рабочее пространство, очистите все. – ilya

6

Если кто-то получил это во время выполнения модульных тестов необходимо выполнить следующие действия:

  1. Выберите модульные тесты целевой
  2. Перейти Построить Настройки
  3. Поиск «Deployment Target»
  4. Изменение развертывания целевой версии к цели развертывания вашего проекта

Вот и все!

enter image description here

+0

Это была моя проблема. – LightningStryk

+0

эй, рад, что это помогло :) –

+0

Обратите внимание, что у вас есть чтобы установить это для основного проекта и всех подпроектов - в основном проекте это отображается в разделе «Общие», но в подпроектах (библиотеках) это отображается в разделе «Развертывание», как показано на рисунке. Проще всего использовать окно поиска в разделе «Настройки сборки» для каждого подпроекта. Я ничего здесь не добавляю, просто пытаюсь сделать его еще более ясным. Спасибо, Сергей! –

4

Я также имел эту проблему, и я установил его, добавив рамки CoreFoundation.framework построить настройки.

+1

Project General ==> Связанные структуры и библиотеки ==> Добавить CoreFoundation (установить статус 'Необязательно') – liaogang

18

У меня была такая же ошибка, и я исправил. Я удалил CoreFoundation.framework и снова добавил статус «Необязательно» и работает.

+0

Самое простое и единственное рабочее решение –

+0

Его работа (Y) –

4

Это проблема на сборке iOS8 с новым выпуском XCODE, пожалуйста, удалите CoreFoundation.framework и добавьте его снова с статусом «Optional».

Смежные вопросы