Balloonsys Inc.

Just a blog now.

平安好房iOS开发团队技术周报(第二期)

本期周报主要包括平安好房APP在模块化架构推进过程中遇到的一些有意思的技术问题,当然也有一点点关于WWDC 16的资讯(开发者版)。

资讯

1) WWDC 2016 新系统发布会5分钟无废话版简介

苹果还宣布了一个为 Flash/SSD储存设备优化的新文件系统Apple File System(APFS),希望对我那台老MBP有所帮助(前不久刚自己动手换了SSD)。APFS预计将在2017年发布,暂不会提供它的开源实现。

技术人员的目光不要被各类媒体的无脑小编带偏,至于其他方面的更新,此处不表,冷嘲也好、热讽也罢。

2) 关于 WWDC 16 总得说点什么

开发者记录的一些感想,作者曾在QQ音乐团队独立完成Apple Watch端第一个版本,目前在阿里巴巴。

开发

1) NSInvocation returns value but crash the app

在平安好房APP推进模块化架构过程中,对一些曾经使用MRC的代码做了ARC迁移。冷不丁的被NSInvocation调用给坑了一把。

在ARC模式下,getReturnValue:仅仅是从invocation的返回值拷贝到指定的内存地址,如果返回值是一个NSObject对象的话,是没有处理内存管理的。而我们在定义returnValue时使用的是__strong类型的id类型,ARC就会假设该内存块已被retain(实际没有)。当returnValue出了定义域,被释放时,导致crash。

2) performSelector may cause a leak because its selector is unknown

依旧是ARC迁移相关。在迁移到ARC之后,编译器给出了一个可能leak的警告。仔细研究后,决定采用SuppressPerformSelectorLeakWarning宏解决。

3) Creating and Distributing iOS Frameworks

文章介绍了Framework模板的用法,特别是如何在项目中使用新建的Framework,其中的方案在好房统计SDK开发、架构演进过程中均实践过。

工具

1) CocoaPods中一些问题的解决

上一期周报提到过,目前不少公司模块化架构采用的CocoaPods方案。在使用CocoaPods的过程中难免遇到各类问题,翻翻这篇文章的总结,相信你会有些收获。

2) Achieving Awesomeness with Local CocoaPods

作者(曾经是Twitter for Apple Watch的负责人)介绍了使用私有Pods的一些思考,有一段话非常赞同:

While this approach works great if your Pods are stable, I’ve found that this doesn’t work too well if your Pods are still in active development; keeping them in lockstep with your application code can be a huge pain, particularly on larger teams with multiple feature branches.

3) Octopress与El Capitan冲突问题解决方案

近一年没有写blog,近一年没有用Octopress,所以与El Capitan冲突的问题也是上周末才知道。

小结一下:新系统下需要新的依赖库,而这些库需要ruby2.2.3的版本安装。

其他

1) 注册在开曼的公司,其期权究竟能不能买?

updated on June 19: 当事公司是青云,看其回应

2) 文摘

人生的困扰大抵来自四个方面:不可避免的死亡,内心深处的孤独感,我们追求的自由以及生活并无显而易见的意义可言。

@end