0

我在用户的崩溃日志中收到以下消息:

Dyld 错误消息:找不到符号:_OBJC_CLASS_$_NSMetadataQuery

所以我理解解决方案是我应该将 Foundation 框架设置为“可选”。但令我感到奇怪的是,这种崩溃只发生在某些 iOS4 设备上,而不是其他设备上,而且它也不会在 4.3 模拟器中崩溃。它只发生在 iPad(运行 iOS4)上,但即便如此,它也只发生在其中的一些上。有人可以解释为什么会这样吗?

如果它是链接框架的错误,它应该在所有 iOS4 设备(或至少所有 iPad)上崩溃,对吗?

4

2 回答 2

1

NSMetadataQuery 在 iOS >= 5.0 上可用,我假设你知道,因为你在谈论弱链接框架。

首先,您可能不再需要这样做了。

由于这是在运行时发生且不可重现,因此听起来您的逻辑不一致。在没有首先确保类存在的情况下,您是否在任何地方使用 NSMetadataQuery?您的代码应包含在如下成语中:

if ([NSMetadataQuery class] != nil) {
    // Use the class
}
于 2012-02-11T22:02:52.473 回答
0

我有这个确切的错误。这不是一个逻辑案例,因为它在 App Delegate 被调用之前就崩溃了,而我的使用NSMetadataQuery在生命周期中要晚得多。

事实证明,需要对 Foundation 框架进行弱链接。

于 2012-04-02T20:05:44.620 回答