类是在两者中实现的.将使用两者之一

MrG*_*nst 36 objective-c objective-c-runtime ios socketrocket

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

Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理它,因为我看到的大多数解决方案都需要自己编译静态库来更改类名等,而且我无法访问源代码.

有什么建议?

bbu*_*bum 48

我写了这条错误信息!

更改类名称或不链接到所述库.

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

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

如果是后者,那么你将不得不修改其中一个库.

•实际上,我修改了错误.过去常常暗示会使用其中一种.但事实并非如此,并且不同平台的行为也不同.因此,它被改变,以便在确定行为未定义时更精确.

  • @bbum项目如何使用项目链接的另一个框架中的框架类?(就像你在你的回答中所说,这适用于项目明确链接SR的第一种情况)如果我不进行导入<framework_name>它不会识别框架类 (6认同)
  • 有没有办法让这个警告沉默? (5认同)

Goo*_*rel 5

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

选定两个目标的目标成员资格

删除测试目标Target Membership解决了这个问题:

仅选择一个目标的目标会员