Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 类在这两种语言中都实现。将使用其中一个_Ios_Objective C_Objective C Runtime_Socketrocket - Fatal编程技术网

Ios 类在这两种语言中都实现。将使用其中一个

Ios 类在这两种语言中都实现。将使用其中一个,ios,objective-c,objective-c-runtime,socketrocket,Ios,Objective C,Objective C Runtime,Socketrocket,我有一个使用SocketRocket的项目,它有一个依赖项(通过CocoaPods安装),并且从HeapanAnalytics导入了一个静态库。显然,HeapAnalytics库已经使用了SocketRocket。我在编译时没有收到错误,但在运行时收到以下信息: Class SRWebSocket is implemented in both [path] and [path]. One of the two will be used. Which one is undefined. 我不知道

我有一个使用SocketRocket的项目,它有一个依赖项(通过CocoaPods安装),并且从HeapanAnalytics导入了一个静态库。显然,HeapAnalytics库已经使用了SocketRocket。我在编译时没有收到错误,但在运行时收到以下信息:

Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.
我不知道如何处理它,因为我看到的大多数解决方案都需要自己编译静态库,更改类名等等,而且我没有访问源代码的权限


有什么建议吗?

我写了那个错误消息

要么更改类名,要么不链接所述库

您的项目是如何配置的?是否有任何地方明确链接到SR?或者它是链接两个已经包含SR的静态库的产物

如果是前者,则停止直接针对SR的链接,只继承已经使用它的库附带的版本(警告:确保它具有正确的版本)

如果是后者,则必须修改其中一个库


•实际上,我修改了错误。它曾经暗示会使用其中一个。但事实并非如此,不同平台的行为也不同。因此,对其进行了更改,以便更准确地识别未定义的行为。

我编写了该错误消息!•

要么更改类名,要么不链接所述库

您的项目是如何配置的?是否有任何地方明确链接到SR?或者它是链接两个已经包含SR的静态库的产物

如果是前者,则停止直接针对SR的链接,只继承已经使用它的库附带的版本(警告:确保它具有正确的版本)

如果是后者,则必须修改其中一个库


•实际上,我修改了错误。它曾经暗示会使用其中一个。但事实并非如此,不同平台的行为也不同。因此,对其进行了更改,以便更准确地识别未定义的行为。

在我的案例中,当我不必要地将源文件添加到我的主应用程序目标和测试目标时,会出现此错误:

将测试目标从
目标成员身份中删除
解决了它:


在我的情况下,当我不必要地将源文件添加到我的主应用程序目标和测试目标时,出现此错误:

将测试目标从
目标成员身份中删除
解决了它:

概述: 该错误表明同一符号/类别定义了两次

解决方案:
  • 检查链接的框架,查看是否存在任何重复项。如果是,请删除副本
  • 清理生成文件夹(Command+Shift+K)
  • 如果是模拟器,则重置模拟器并重试
  • 如果是设备,请重新启动设备并重试
我的经验: 我曾两次遇到过同样的问题,一次是重复的框架,另一次是重置模拟器的帮助。

概述: 该错误表明同一符号/类别定义了两次

解决方案:
  • 检查链接的框架,查看是否存在任何重复项。如果是,请删除副本
  • 清理生成文件夹(Command+Shift+K)
  • 如果是模拟器,则重置模拟器并重试
  • 如果是设备,请重新启动设备并重试
我的经验:
我曾两次面临同样的问题,一次是重复的框架,另一次是重置模拟器的帮助。

我收到这个警告已经一个多月了,然后我终于尝试了这个方法,它对我有效:

  • 重置模拟器(菜单:硬件->删除所有内容和设置…)
  • 清理项目(Command+Shift+K)
  • 清理构建文件夹(Command+Option+Shift+K)
  • 再次在模拟器上运行代码

  • 我有这个警告已经一个多月了,然后我终于尝试了这个,它对我起了作用:

  • 重置模拟器(菜单:硬件->删除所有内容和设置…)
  • 清理项目(Command+Shift+K)
  • 清理构建文件夹(Command+Option+Shift+K)
  • 再次在模拟器上运行代码

  • 我想你必须停止直接链接
    SocketRocket
    ,而是依赖
    HeapAnalytics
    中包含的链接。如何停止链接通过CocoaPods安装的依赖项?我想你必须停止直接链接
    SocketRocket
    而是依赖于
    HeapAnalytics
    中包含的内容。如何停止与通过CocoaPods安装的内容相关的内容链接?谢谢。不幸的是,这证实了我的怀疑,我将不得不完全修改其中一个库。修复比我想象的要容易得多。我想我需要做一些非常复杂的事情,但我所要做的就是重构->重命名所有出现的SRWebSocket及其伴随的内部类。我能预见的唯一问题是,如果非HeapAnalytics库使用不同版本的SR,可能会出现一些问题。@bbum项目如何使用项目链接的另一个框架中的框架类?(就像你在回答中所说的,这适用于第一种情况,即项目显式链接到SR)如果我不输入,它将无法识别框架类,有没有办法消除这个警告?@bbum是否有什么东西可以传递给dyld,也许可以通过某个dyld环境变量,让它只是pic