上周关于 Dash 被苹果下架的事情有了来自 苹果的解释,苹果说 Dash 进行了刷榜,具体来说,是在 Dash 的评价中发现了一些明显带有欺骗性的评分。苹果同时说这个决定是最终的,并且不可申述(final and can’t be appealed),所以这件事情可能最终的结果就是这样了。
我们从这件事情中可以看出,苹果对于刷榜的行为变得越来越严厉了。但是在国内,刷榜的行为还是普遍存在,而且大多数都没有受到惩罚。例如,我们公司的三款产品都没有刷榜,但是我们的竞争对手其实都有明显的刷榜行为。希望苹果能够有机会也整治一下国内的环境,让大家都在一个公平的环境中竞争。
是的,Swift 4 开始开发了,在 Swift 4 在 GitHub 的主页上,苹果公布了 Swift 4 的 主要目标。时间上,苹果计划在 2017 年晚些时候正式发布 Swift 4。苹果希望将 Swift 4 的开发分为两个阶段:
iDev 大会是一场由开发者自己办的技术会议,会议内容主要面向苹果的开发者,我是这次会议的出品人。
今年 iOS 的话题其实集中在 Swift 语言、函数式编程、跨平台方案,所以这方面的话题本次大会都有涉及。另外 iOS 安全一直是被人们较为忽视的一个方面,本次大会我在这方面也特别有设计议题讨论。
考虑到 iDev 大会希望涉及苹果全平台的技术,所以本次大会我们也安排了关于 macOS、watchOS 和 HomeKit 的议题。
对了,购票时输入我的优惠码:tangqiao,可以获得折扣票价再打 85 折哟。你也可直接访问以下网址获得优惠过的价格:
http://www.bagevent.com/event/207773?discountCode=tangqiao
Optional Non-Escaping Closures: 本文讨论了 Swift 中的闭包的 escaping 的情况。所谓 escaping,就是指闭包在作为参数,传递给相应函数之后,相应函数执行完成了,但是闭包可能还需要被调用。所以,这个闭包似乎是逃离(escaping)了函数的作用时间。因为按理说函数执行完了,相应的参数应该就没用了,但是对于 escaping 的闭包,却不是这样。
什么情况下会出现这种情况呢?最常见的场景就是异步调用。比如我们发起一个网络请求,传入了一个闭包作为回调参数。这个闭包显然需要在网络请求结束时,才会被调用,这就是一个 escaping 的闭包。类似的还包括:我们把一些闭包放到 GCD 提供的 Dispatch Queue 中,也会造成 escaping 的闭包。
在本文中,作者讨论了一种比较特别的现象:只要一个闭包是 Optional 的,则它一定会是一个 escaping 的闭包。作者讨论了产生此问题的原因,并且提供了一些解决方案。
《黑科技:把第三方 iOS 应用转成动态库》,本文介绍了一个自己写的工具,能够把第三方 iOS 应用转成动态库,并加载到自己的 App 中,文章最后会以支付宝为例,展示如何调用其中的 C 函数和 OC 方法。另外,本文首发在我的微信公众号:iOSDevTips 中,如果你还没有关注过,请扫码关注哟:
本周视频推荐 objc.io 出的一期视频:手写一个 Parser。
本周推荐的工具,是一个 Xcode 8 的效率工具。它可以方便你在任何时候输入需要 import 的内容。其实这类工具在别的平台都是 IDE 自动提供的,以前我在用 Eclipse 写后台的时候,用了一个需要 import 的库的类,只需要按 cmd + shift + o,IDE 就会自动把这些需要 import 的头文件帮你填上,以节省时间。Xcode 在这方面,还有挺多需要加强的。Anyway,Xcode 的 extension 这个机制也让我们能够自己动手丰衣足食了。
该工具在 GitHub 上的地址是 Import,以下是使用起来的效果动画:
本周的趣图来自 汤圣罡,由苹果的各种配件组成的一个笑脸,愿大家都有一个愉快的一天。