6

所以我有以下问题:

在我的 iPhone 5s 上的 iOS 8 上启动我的应用程序,我没有收到任何错误,但在我的 iPhone 3GS 上的 iOS 6.1.3 上启动我的应用程序,我收到此错误:

dyld: Symbol not found: _OBJC_CLASS_$_NSNetService
Referenced from: /var/mobile/Applications/567E221A-FC5C-4011-90AD-E47E5FF033B1/BellyClient.app/BellyClient
Expected in: /System/Library/Frameworks/CFNetwork.framework/CFNetwork
in /var/mobile/Applications/567E221A-FC5C-4011-90AD-E47E5FF033B1/BellyClient.app/BellyClient

我导入了一个名为 Server 的类。该类使用 CFNetwork.framework,其中包含 NSNetService 类,该类从 iOS 2.0 开始可用。

使用 NSClassFromString(@"NSNetService") 并不是我真正喜欢的解决方案。我也不知道,为什么会出现这个错误,因为类 NSNetService 应该在 iOS 6 中可用。它可能是设备吗?

我搜索并发现,将框架设置为可选,将解决这个问题。但问题是,当我在 iOS 6 上运行应用程序时,我无法使用该框架。当我这样做时

if ([NSNetService class] == nil) {
    NSLog(@"NSNetService is nil");
}

我得到打印 NSNetService 为零。

是否可以在不崩溃且不将框架设置为可选的情况下启动应用程序

谢谢 iComputerfreak

4

1 回答 1

6

尝试重新添加 Foundation.framework:

  1. 转到项目的目标
  2. 选择“常规”选项卡
  3. 在“Linked Frameworks an Libraries”下查找 Foundation.framework,选择它并按底部的减号 ('-') 以删除此框架。
  4. 现在按加号('+')并搜索 Foundation.framework - 重新添加它,它应该可以修复你的崩溃。

希望它有效 - 它对我有用。

于 2014-06-23T14:30:01.943 回答