带Cocoapods的SocketRocket会出错

时间:2013-01-08 00:14:29

标签: ios xcode cocoapods socketrocket

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

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

'dispatch_get_current_queue' is deprecated: first deprecated in iOS 6.0

所以我猜我可能会错过一个设置它的步骤吗?

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

1 个答案:

答案 0 :(得分:2)

所以有几件事

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

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

  3. 修改

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

    我在SRWebSocket.m的源代码中找到了一个高峰,因为podspec repo(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

    进一步挖掘后,如评论中所述。在定位iOS 6.0+或OS X 10.8+时,不允许dispatch_releasedispatch_retain,因此您需要删除这些调用或执行项目pull request 55中建议的内容