iPad Simulator (4.3) вылетает с ошибкой dyld - PullRequest
1 голос
/ 06 декабря 2011

Я запускаю приложение в iPad Simulator (4.3), которое вылетает из-за ошибки отсутствующего символа:

dyld: Symbol not found: _OBJC_CLASS_$_NSMetadataQuery
  Referenced from: /Users/Me/Library/Application Support/iPhone Simulator/4.3.2/Applications/B13BE6DF-61B9-4C23-98E7-BEC72330FF19/iPad.app/iPad
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
 in /Users/Me/Library/Application Support/iPhone Simulator/4.3.2/Applications/B13BE6DF-61B9-4C23-98E7-BEC72330FF19/iPad.app/iPad

В какой момент процесса запуска возникает эта ошибка? Я, кажется, на самом деле не выполняю какого-либо кода - я установил точки останова в обоих местах, где будет создаваться этот класс (который никогда не выполняется, когда версия <5.0) и при методе делегата <code>applicationWillFinishLaunching:

Но сбой происходит до того, как будет достигнута любая из точек.

Я знаю, что основная проблема заключается в том, что класс NSMetadataQuery был добавлен в iOS 5.0, но я, конечно, хотел бы поддерживать обратную совместимость с более ранними версиями. (Я использую правильные NSClassFromString звонки.)

У меня есть приложение для iPhone, которое использует NSMetadataQuery на iOS 5.0, и пропускает его, если работает 4.3 или ниже, и работает должным образом в симуляторе. Таким образом, я не понимаю, почему происходит сбой этой конкретной программы.

Существует ли класс NSMetadataQuery в версии iPhone 4.2 и 4.3 для iPhone, но не в версии iPad? (А API просто не был доступен до iOS 5.0?)

1 Ответ

2 голосов
/ 08 декабря 2011

Основная проблема заключалась в том, что платформа Foundation была сильно связана в версии приложения для iPad (которая вылетала) и была слабо связана в версии для iPhone. (Это позволило запустить версию iPhone, не требуя, чтобы эти классы связывались во время соединения. Конечно, вызов / создание экземпляра любого из этих классов в 4.X-версиях симулятора iPhone аналогично потерпел бы крах.)

Проблема была решена путем изменения (под Информация о проекте в XCode) опция зависимости Foundation.framework с требуется на необязательно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...