0

我今天才开始使用 CocoaPods……首先我添加了 AFNetworking,它运行良好……然后我需要 SocketRocket……

但是,SRWebSocket.m 在添加 CocoaPods 后会引发 9 个警告和 6 个错误......这些错误与保留/释放不可用和 ARC 限制有关......警告都是:

'dispatch_get_current_queue' is deprecated: first deprecated in iOS 6.0

所以我猜我可能错过了以某种方式进行设置的步骤?

任何帮助,将不胜感激...

4

1 回答 1

2

所以有几件事

  1. 您可能应该向 SocketRocket 提交一个拉取请求,以删除其使用dispatch_get_current_queue并将其更改为替换它的任何内容,但这是一个警告,因此现在不是一个大问题。

  2. 由于 SocketRocket 项目不支持/使用 ARC(可能是因为它具有保留/释放调用),因此您需要进入 Build Phases > Compile Sources 并找到所有 SocketRocket 类并添加-fno-objc-arc编译器标志。这将让您编译,理想情况下,尽管应更新 SkyRocket Podspec 以指定应关闭 ARC。compiler_flagsPodspec 中的属性应该包括-fno-objc-arc,你应该提交一个拉取请求来更新它。

编辑

有趣的是,SocketRocket 吹嘘它使用 ARC,我没有看到任何保留/释放的调用(在 CFRetain/CFRelease 之外,这在 ARC 中很好/必要)。

对于 podspec 存储库(0.1.0 和 0.2.0)中列出的两个版本都没有保留/释放调用,我对 SRWebSocket.m 的源代码有所了解。

0.2.0:https ://github.com/square/SocketRocket/blob/v0.2.0/SocketRocket/SRWebSocket.m

0.1.0:https ://github.com/square/SocketRocket/blob/82c9f8938f8b9b7aa578866cb7ce56bc11e52ced/SocketRocket/SRWebSocket.m

奇怪的??您确定收到有关 SRWebSocket.m 的错误吗?

编辑 2

经过进一步挖掘并如评论中所述。dispatch_release并且dispatch_retain在针对 iOS 6.0+ 或 OS X 10.8+ 时是不允许的,因此您需要删除这些调用或执行项目拉取请求 55中建议的操作

于 2013-01-08T00:24:14.220 回答