美文网首页iOSiOS多线程程序员
iOS 6 之后的 dispatch_semaphore_t

iOS 6 之后的 dispatch_semaphore_t

作者: mconintet | 来源:发表于2015-10-20 22:50 被阅读1364次

    之前有一个项目采用的是 MRR,今天在将其转 ARC 时有一个小问题,就是 Xcode 提示 dispatch_semaphore_t 要使用 strong 这个 property attribute 去修饰,而我使用的是 assign

    出现这个提示的原因是 dispatch_semaphore_t 在 iOS 6.0 之后,被直接作为 Objc 对象并可交由 ARC 管理。所以简单的按照提示将项目中的几处 assign 改为 strong 就可以了,改完之后 analyze 下没有问题。

    随后,我在另一对其有依赖的项目中使用 pod update,出现这样的错误提示:

    dispatch_semaphore_t Property with 'retain (or strong)' attribute must be of object type

    看看提示的内容,这不是在逗我?刚告诉我 dispatch_semaphore_t 可以作为 Objc 对象由 ARC 管理,现在又提示我它不是对象,不能使用 strong 修饰?当前的项目是 iOS 9.0 好吗!

    正当我觉得自己踩了屎的时候,突然想到是不是 pods 的问题,于是 google 下发现有类似的搜索结果,点了几步发现原来是这样:

    https://github.com/AFNetworking/AFNetworkActivityLogger/commit/4aaa49fcaa887183e950e7617b76335b868684ed

    需要改下项目中的 podspec。对于这种 corner case 而言,pods 应该给出提示的好吗,明明有相应的选项了,再提示下不行吗 orz...

    另外举一反三一下,似乎目前的 Dispatch objects 都是 Objc 对象并可又 ARC 管理了,见:What property should I use for a Dispatch Queue after ARC?

    希望可以帮到遇到类似问题的朋友吧 :)

    相关文章

      网友评论

      本文标题:iOS 6 之后的 dispatch_semaphore_t

      本文链接:https://www.haomeiwen.com/subject/pqtthttx.html