老司机 iOS 周报 #31 | 2018-08-13
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
备受 iOS 开发者喜爱的 raywenderlich 社区全新改版!
raywenderlich 这次进行大改版,为开发者提供更为优质的教程。此次更新主要有:
- 教程将全部按照主题分类,目前已经有 iOS & Swift tutorials、Android & Kotlin tutorials、Unity tutorials 以及 Unreal Engine tutorials 四大类,未来 rw 也将继续增加新的分类;
- 每个分类都会有自己的主页,可以帮助你更快地找到自己所需要的教程;
- 全新的学习路径规划,真正实现从『入门』到『精通』;
- 个人主页上线,掌控自己的学习进度;
- 教程库,成千上万的教程资源供你筛选;
WWDC 2018 视频已经全部配上简体中文和日文字幕
在早些时候,苹果已经为所有视频配上了英文字幕,仅少部分视频有中文字幕,这次全部都已配上简体中文和日文字幕。相比去年第一次有中文字幕,今年的又额外增加了日文字幕,看来日语区的 Apple 开发者也不少。如果你对之前的看的某个 Session 还有疑问,不如趁着中文字幕上线的热乎劲再回顾一遍。
Dart 重启!Dart 2 正式发布,目标成为移动与 Web 开发主流语言
Google Dart 产品经理宣布 Dart 2 正式发布,这标志着 Dart 语言的重启,目标成为主流的移动和 Web 开发语言。同时,Google 还宣布重构 Dart Web 平台,这对开发者来说,是一个高效率、高性能和可扩展的组合。
Google 称,Dart 2 的目的有三个:优化语言开发,增强 Google 对 Web 和移动框架的支持能力,将 Google 内部的一些支持 Dart 的工具和组件带给外部的开发者。
文章
🐕 Guys, REST APIs are not Databases
作为目前最常见的后端设计风格,REST API 已经成为任何项目中不可缺少的一部分。然而在实际使用的时候,开发者很容易把 REST API 设计成直接对数据库进行操作。
作者在文章中解释了为什么直接对数据库操作是有问题的,同时也给出了自己的对 REST API 设计的一些理解。
🐕 Refactoring Massive App Delegate
每一个 iOS 程序员都需要和 AppDelegate 类打交道,App 生命周期的逻辑一般都会放在这个类中进行处理。该文作者提出了一个“Massive App Delegate”的概念,表示当一个 App 越来越复杂,其 AppDelegate 类也会变得越来越庞大并且难以维护,作者分析了一些有名的开源项目并抽取了一些大家喜欢放在 AppDelegate 类中处理的逻辑列表,并且针对性的提出了三个方向:命令模式,组合模式和中介者模式来更好的组织 AppDelegate 中的代码,很有参考价值。
🐕 Type inference-powered serialization in Swift
类型推断是 Swift 作为强类型语言的一个特性。本文介绍了利用泛型实现类型推断简化 Codable 解析 JSON 的操作。阅读本文可以学习到在实践中如何应用泛型。
🐢 面试中的个人竞争力
很多人都觉得自己没有竞争力,那相信这篇专栏会戳到你的痛点,找工作是不可能的,这辈子都不可能找工作,算法又不会,原理又不懂,只能做一个 github 的搬运工,才能维持会写代码的样子。
写简历要挑重点,用最简洁的篇幅,展现出你个人独一无二的亮点。面试需要多展现自己的思考过程,思考的深度。但这一切都基于过去的积累,就算是再平凡的工作,也能通过发现问题,探寻本源,自驱优化来锻炼自己,提升竞争力,从而赢得好机会的青睐。
🐕 由 NSObject *obj = [[NSObject alloc] init] 引发的一二事儿
这是一篇随想类型的文章,由 [[NSObject alloc] init]
开始讲起,覆盖了 Objective-C 内存分配、ARC、@property
、atomic
等,看的过程遇到不是很清晰的知识点建议另找资料细读。
🐢 剖析 ARM 64 架构中的 objc_msgSend
我们都知道 Objective-C 的"方法调用"其实是消息转发,[obj foo]
其实都会转变成 objc_msgSend
调用。本文概述了 objc_msgSend
内部的代码处理流程,而在具体代码实现层面,整个消息处理流程代码可以分为两个部分:通过汇编代码实现的快速路径部分(fast path),C 语言实现的慢路径流程(slow path)。其中汇编代码对应缓存表中查询方法部分并且未命中时跳转 C 代码来进行下一步处理。本文重点讲了 arm64
架构下 objc_msgSend
汇编部分指令细节。
🐢 构建流畅的人机交互
今年 iOS 花了很大的功夫在优化系统基础体验上,甚至在 WWDC 里专门开一个 session 来讲如何构建流畅的人机交互。这篇文章的作者在看了这个 session 之后有感而发写了这篇文章,在介绍和总结 session 内容的同时,还动手通过代码实现了那些 Design Tips,里面特定交互的最佳实现和动画实现的思路都非常棒,推荐一看。
🐕 血泪总结:如何从微信小程序的坑跳进支付宝小程序的大坑
支付宝小程序也在公测之中,开发者可以自由申请进行体验。不同于微信小程序的社交传播场景,在一些线下支付场景使用支付宝小程序也能获得很多流量,对产品也是大有助益,因为迁移成本低,也是值得尝试。
本文虽说是血泪总结,跳进大坑,但其实从代码的角度来看支付宝小程序的代码规范与API和微信小程序相比,真的是非常非常的近似,只有一些细节的差异。如果你的微信小程序已经很成熟了,那么尝试支付宝小程序将会没有障碍,毕竟微信已经成熟了如果差异很大就没人会用支付宝小程序了。不过终究还存着API差异,如果打算一套代码然后通过前端工程化的方案同时适配2种小程序,那么本文作者踩的这些坑值得关注。
🐕 WubaRN 分步打包流程
用官方命令打出来的 ReactNative(RN) JSBundle 都会带上自身框架代码。如果每个 Bundle 都自带框架代码的话,对于业务模块多的 App 来讲就不是很友好了。所以很多公司都会采取将框架和基础模块代码拆分出来,让所有业务使用同一份基础代码。
本文是 58无线技术 分享的一篇关于 RN 打包的文章,作者按照打包流程来解释他们的 WubaRN 拆分打包的思路,同时也介绍了如何通过缓存来加速打包。还在使用 RN 或对 RN 工程化感兴趣的都可以了解下。
🐕 NLLanguageRecognizer
在 iOS 12中,苹果开放了更多机器学习的能力给开发者。NLLanguageRecognizer
便是其中的一员。本文介绍了如何使用NLLanguageRecognizer
判断字符串是属于哪种语言,检查拼写错误和合成声音。
🐎 5 分钟教你成为会赚钱的独立开发者
作者几个月前辞去大公司 iOS 工程师的工作,成为了一名全职独立开发者,目前已经在 App Store 发布了 17 款 app,累计下载量超过 56W 次,其中两款应用被 App Store 多次推荐。作者目前的独立开发月收入已经与辞职之前持平,在这篇文章里他会为你介绍如何把知识直接通过代码变成钱,包括获得创意、建立付费和内购模式、优化 ASO 等等。
工具
Xcode::Install
Xcode::Install 是一款从命令行更新 Xcode 的工具,它可以帮助你安装并管理多个版本的 Xcode。它使用了 Apple 的 开发者下载中心 来查找并下载指定的版本。
Knil
Knil 是一款帮助你测试和验证 Universal link 是否有效的工具。在 Knil 中输入对应的 host,它就会帮你把对应的 apple-app-site-association 文件下载到本地,并列出其中的 path 方便你进行测试。可以直接在 App Store 搜索下载 Knil。
内推
北京-蚂蚁金服 招iOS/安卓/前端开发
蚂蚁金服招聘,负责支付宝会员及帐号业务线,地点北京国贸,金台夕照地铁站出口 100 米。虽然招聘链接只给了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有兴趣的同学欢迎将简历发送到:[email protected] / [email protected] (同一个邮箱) 或这微博私信 @折腾范儿_味精 了解情况。
编辑内推
-
上海即刻:如果你认识聪明勤奋、胆大心细、有追求的工程师,那就来加入我们吧!任何推荐或简历可直接发给 Jason(即刻 iOS leader): [email protected],或微博 @JasonYuh。
-
杭州/广州/深圳 奇志科技招聘 iOS、前端:奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域, 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感谢可以微博上私信 @没故事的卓同学 了解。
-
深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目:如想了解更多深圳头条的信息,可以加小T微信:tomtan,切磋技术和聊情怀都可以喔~~~~
-
字节跳动北京 iOS 团队持续招人中:简历可以发送到邮箱 [email protected],或者添加我(@AidenRao)的微信 jingmu1994 了解更多公司及岗位信息。
-
百度教育事业部招 iOS 开发:百度教育事业部,地点:北京西二旗。部门下面有百度阅读,百度文库,百度爱听等 App 产品。团队技术氛围浓厚,有兴趣的同学欢迎将简历发送到我的邮箱:[email protected]。
关注我们
我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
本期编辑
@没故事的卓同学,@四娘,@享耳先森,@Damonwong,@折腾范儿_味精,@张嘉夫,@AidenRao,@Parsifal,@aaaron7,@方秋枋,kyo,tom510230,anotheren,水水,looping,@JasonYuh,@老老老老老老老驴
说明
🚧 表示需翻墙,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)