我今天才开始使用 CocoaPods... 首先,我添加了 AFNetworking,效果很好……然后我需要 SocketRocket……
然而,SRWebSocket.m 在添加 CocoaPods 后抛出 9 条警告和 6 条错误... 错误是关于保留/释放不可用和 ARC 限制...... 警告都是:
'dispatch_get_current_queue' is deprecated: first deprecated in iOS 6.0
所以我猜我可能错过了以某种方式进行设置的步骤?
任何帮助将不胜感激......
最佳答案
有几件事
您可能应该向 SocketRocket 提交拉取请求以删除
dispatch_get_current_queue
的使用并将其更改为被替换的任何内容,但这是一个警告,因此对于现在。由于 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
奇怪??您确定收到有关 SRWebSocket.m 的错误吗?
编辑 2
经过进一步挖掘并如评论中所述。 dispatch_release
和 dispatch_retain
在针对 iOS 6.0+ 或 OS X 10.8+ 时不允许,因此您需要删除这些调用或执行 pull request 55 中建议的操作对于项目
关于ios - 带 Cocoapods 的 SocketRocket 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206330/