ios - 带 Cocoapods 的 SocketRocket 出错

标签 ios xcode cocoapods socketrocket

我今天才开始使用 CocoaPods... 首先,我添加了 AFNetworking,效果很好……然后我需要 SocketRocket……

然而,SRWebSocket.m 在添加 CocoaPods 后抛出 9 条警告和 6 条错误... 错误是关于保留/释放不可用和 ARC 限制...... 警告都是:

'dispatch_get_current_queue' is deprecated: first deprecated in iOS 6.0

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

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

最佳答案

有几件事

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

  2. 由于 SocketRocket 项目不支持/利用 ARC(大概是因为其中包含保留/释放调用),您将需要进入构建阶段 > 编译源并找到所有 SocketRocket 类并添加 -fno-objc-arc 编译器标志。这将允许您编译,理想情况下应该更新 SkyRocket Podspec 以指定应关闭 ARC。 Podspec 中的 compiler_flags 属性应该包括 -fno-objc-arc,您应该提交一个 pull request 来更新它。

编辑

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

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

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_releasedispatch_retain 在针对 iOS 6.0+ 或 OS X 10.8+ 时不允许,因此您需要删除这些调用或执行 pull request 55 中建议的操作对于项目

关于ios - 带 Cocoapods 的 SocketRocket 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206330/

相关文章:

ios - Xcodebuild测试运行失败

ios - 未生成适用于 iOS 的 Xcode 6.1 静态库 .a

ios - 如何解决 iOS 后台应用程序获取无法正常工作的问题?

ios - 链接器命令退出代码 1

cocoapods - el Captain 下无法执行 `pod install` (15A279b)

ios - 是否可以从网站中的某些链接打开 iOS 应用程序?

ios - 如何在 iOS objective-c 中实现像 Feedly、insorts news app 这样的动画

ios - 在不包含源代码的情况下创建 CocoaPod 库

ios - 为从服务器加载的数据分配 2 维数组到 1 维数组

ios - 如何在没有 Storyboard的情况下运行应用程序?