移动开发每周阅读清单:iOS多线程安全、构建Android MVVM应用框架

移动开发 Android iOS
iOS 多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。共享状态,多线程共同访问某个对象的 property ,在 iOS 编程里是很普遍的使用场景。本文从 Property 的多线程安全说起,分享了对 memory layout 和原子性的理解,并解释了 atomic 和 nonatomic 的区别。

(我进去瞅了一眼又退出了。)

『移动开发每周阅读清单』第三十七期与大家见面了,上周支付宝来抢头条了,我想事情变成这样不是他们的本意,只能说产品经理还是很重要啊。

提示:点击文末阅读原文可打开带链接的版本。

提示2:文末有小福利~

新闻

Apple 停止了 AirPort 产品线开发

根据彭博社报道,Apple 已经停止包括 AirPort Express、AirPort Extreme 等无线路由产品的开发。Apple 希望可以将人手用在带来收益更高的下一代苹果产品中。不过并不清楚苹果会在什么时间点停止生产这些产品,目前这些产品还可以买到,如果你想要买一款留做纪念,可能要抓紧了。

安卓7.1开发者预览版Beta2放出:更接近完全体

11月23日消息,谷歌刚刚推出了安卓7.1第二个开发者预览版,这也将是安卓7.1***一个预览版,之后谷歌会推出安卓7.1.1正式版。安卓7.1开发者预览版支持Nexus5X、Nexus6P、Nexus9和Pixel C,据谷歌表示,安卓7.1开发者预览版2在系统稳定性和UI方面接近“完全体”。

教程

iOS

iOS多线程到底不安全在哪里?

iOS 多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。共享状态,多线程共同访问某个对象的 property ,在 iOS 编程里是很普遍的使用场景。本文从 Property 的多线程安全说起,分享了对 memory layout 和原子性的理解,并解释了 atomic 和 nonatomic 的区别。

Swift: UserDefaults protocol

一篇类似SwiftyUserDefaults框架的分享,介绍了如何在 Swift 中合理的使用 protocol 场景。

APP 缓存数据线程安全问题探讨

本文探讨了在多线程下如何处理 Cache 的问题,分享了三种解决方案:加锁、分线程 cache 、 数据不可变。

预加载与智能预加载

本文介绍了 iOS 中几种预加载的方案,以及 ASDK 中是如何处理预加载的。

Android

Redex初探与Interdex:Andorid冷启动优化

早在去年10月份,facebook就发布了介绍redex的文章,这个据说可以直接对apk做处理,既提高启动性能,又可减少安装包的利器让安卓开发者们都心动不已。直到今年4月,redex终于开源了,作者***时间对redex做了研究。虽然由于坑多,最终没有接入到项目构建中,但受Interdex启发,在应用冷启动速度优化方面有了新的收获。

使用Buck构建Android工程

Buck构建工具,其实早已不是什么新奇的事物,它是一款由Facebook开发、维护并开源的性能强大的构建工具。不仅在Facebook的全系列产品中广泛应用,而且在国内的微信团队也有使用。其构建的目标代码相当广泛,且对Android工程有所优化,核心思想是多任务并发的构建策略,充分发挥多核优势,Buck可以极大的加快Android工程全量构建的速度,是目前Android全量构建策略中的不二选择。

如何构建Android MVVM应用框架

说到Android MVVM,相信大家都会想到Google 2015年推出的DataBinding框架。然而两者的概念是不一样的,不能混为一谈。MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。那么在Android中是如何通过DataBinding去构建MVVM的应用框架的?View、ViewModel、Model每一层的职责如何?它们之间联系怎样、分工如何、代码应该如何设计?本文给出了答案。

Writing-Better-Adapters 译文及示例

对于Android开发者来说,实现Adapter是最频繁的工作之一。Adapter是所有列表的基本,而列表也是很多App的基本组成。编写一个列表控件的方法大多数时间都是一样的:用一个绑定了Adapter的View来展示数据。然而一直这样会让我们对自己编写的代码变得盲目或者说我们一直在重复创造低级代码。阅读文章,看看作者是如何提高Adapter代码质量的。

开源项目

iOS

Apple 开源 macOS 10.12 Sierra Darwin 代码

Apple 公布了 macOS 10.12 Sierra 的开源 Darwin 代码,代码包含了 macOS、iOS、watchOS 和 tvOS 基于的 Unix 组件的核心集合,包括驱动程序和未加密的内核及其 BSD 部分。

RocketData

LinkedIn 的数据缓存框架,针对不可变Model。

Swimat

快捷对代码排版的 Xcode Extensions 。

StatefulViewController

带状态 ViewController ,方便快速添加各种状态视图。

Android

update

一款清晰灵活简单易用的Android应用更新库。

blurkit-android

这是一款使用简单的模糊工具,可以通过XML来配置。

工作

有招聘移动开发工程师需求可以给我发邮件:amos@infoq.com,附上公司名称介绍、招聘需求、待遇、联系方式等等。我会选择一些放在这里。

Android&iOS研发工程师 by QQ

坐标深圳。负责QQ上视频直播、短视频分享和QQ群相关的开发工作,欢迎对新技术有热情并好学的同学。简历发送至 cppgohan@qq.com

企业产品iOS开发工程师 by QQ

坐标上海。负责企点、企业QQ、手机QQ iOS平台的企业功能开发工作。要求3年以上iOS平台软件开发经验。简历发送至 sunnylyme@163.com

活动

宣传社区办的一些移动相关的线下活动,有想放在这里的欢迎和我打招呼,友情帮宣传。

ArchSummit全球架构师峰会

地点北京。ArchSummit秉承“实践***、案例为主”的原则,展示新技术在行业应用中的***实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。

中国技术开放日广州站

12月9日广州举行。主题为移动开发前沿。我们邀请了来自腾讯、阿里、百度、唯品会的技术专家前来分享一线开发实践。

责任编辑:庞桂玉 来源: 靛青K&郭亮
相关推荐

2017-02-24 10:02:04

AndroidMVVM应用框架

2017-02-27 09:36:01

AndroidMVVM架构

2014-03-27 10:28:31

移动Web开发框架

2010-05-04 08:44:42

Java并发模型

2017-03-02 11:10:39

AndroidMVVM应用程序

2015-07-22 09:51:51

iOS开发线程

2015-07-22 09:39:38

IOS多线程同步

2015-05-05 10:32:15

iOS-MVVM框架

2011-08-18 17:07:23

IOS开发多线程NSInvocatio

2017-07-17 15:19:10

MVVM模式iOS开发MVP

2013-07-19 09:12:54

2012-02-01 09:59:05

TitaniumPhoneGapiOS

2014-12-04 14:10:22

移动应用云

2011-08-08 13:50:29

iPhone开发 NSOperatio 多线程

2013-07-16 10:12:14

iOS多线程多线程概念多线程入门

2011-08-02 10:26:59

iOS 多线程 线程

2016-04-12 09:48:24

nsthread多线程ios

2017-02-22 16:51:11

移动·开发技术周刊

2019-06-06 15:49:53

多线程iOS开发操作

2014-07-21 10:03:56

点赞
收藏

51CTO技术栈公众号