dyld:符号未找到:_OBJC_CLASS_$_NSNetService 错误。

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,其中包含自iOS 2.0以来可用的NSNetService类。
使用NSClassFromString(@“NSNetService”)不是我喜欢的解决方案。 我也不知道为什么会出现这个错误,因为NSNetService类应该在iOS 6中可用。 这可能是设备的问题吗?
我搜索并发现,将框架设置为Optional将解决此问题。 但问题是,当我在iOS 6上运行应用程序时,我无法使用该框架。 当我这样做时
if ([NSNetService class] == nil) {
    NSLog(@"NSNetService is nil");
}

我收到了“打印的NSNetService为空”的信息。

是否可能在不将框架设置为可选的情况下启动应用程序,而不会崩溃。

谢谢iComputerfreak。

1个回答

6

尝试重新添加Foundation.framework:

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

希望它能起作用-对我来说确实有效。


1
非常感谢。我的问题是,我根本没有链接 Foundation.framework。这在 iOS 8 上可以工作,但在 iOS 6 上不行。 - iComputerfreak
对我来说,重新添加框架后清理项目也很有帮助。 - nomnom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接