iOS 6 之后的 dispatch_semaphore_t

之前有一个项目采用的是 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?

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 喜欢就关注我呗! 1.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的...
    iOS白水阅读 1,138评论 0 2
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,853评论 0 9
  • 今天瞧了瞧 Flurry 的统计数据,惊奇的发现iOS9的使用者已经微乎其微。绝大部分的用户已经升级到iOS10以...
    MarkNote阅读 2,741评论 5 3