iOS: ошибка «Символ не найден» на некоторых устройствах iOS4, но не на всех - PullRequest
0 голосов
/ 12 февраля 2012

Я получаю следующее сообщение в журналах сбоев моих пользователей:

Сообщение об ошибке Dyld: символ не найден: _OBJC_CLASS _ $ _ NSMetadataQuery

Итак, я понимаю, что решение состоит в том, что я должен сделать основу Фонда "Необязательной". Но что меня удивляет, так это то, что этот сбой происходит только на некоторых устройствах iOS4, но не на других, и он не происходит в симуляторе 4.3. Это происходит только на iPad (под управлением iOS4), но даже в некоторых случаях. Может кто-нибудь объяснить, почему это может быть?

Если это ошибка со ссылками на фреймворки, она должна вылетать на всех устройствах iOS4 (или хотя бы на всех iPad), верно?

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

NSMetadataQuery доступен на iOS> = 5.0, что, я полагаю, вам известно, поскольку вы говорите о слабом связывании фреймворка.

Во-первых, вам, вероятно, не нужно этого делать.подробнее.

Поскольку это происходит во время выполнения и невоспроизводимо, это звучит как несоответствие в вашей логике.Есть ли где-нибудь, где вы используете NSMetadataQuery без предварительной проверки, что класс существует?Ваш код должен быть заключен в такую ​​идиому, как:

if ([NSMetadataQuery class] != nil) {
    // Use the class
}
0 голосов
/ 03 апреля 2012

У меня была эта точная ошибка. Это не было логикой, так как он падал еще до того, как был вызван App Delegate, и мое использование NSMetadataQuery было намного позже жизненного цикла, чем это.

Оказывается, что слабое связывание основы Foundation было необходимо.

...