转载

老司机 iOS 周报 #17 | 2018-05-02

欢迎 @方秋枋 加入周报的编辑的队伍。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

Swift for TensorFlow 正式发布

TensorFlow 社区在 TensorFlow Dev Summit 2018 上宣布将开源 Swift for TensorFlow 项目,现在终于正式发布了,这里是源码及示例 Models.

文章

iOS 新闻类 App 内容页技术探索

文章针对新闻类 App 内容页的技术实现进行了探索和分析。并将成果封装成三个框架:HybridPageKitReusableNestingScrollview 以及 WKWebViewExtension

文章不仅从技术方案选择,组件化架构,加载速度优化给我们高屋建瓴地展示了新闻类的 Hybrid 技术应该如何构建,更重要地是开启了我们的脑洞:Hybrid应该怎么玩才有意思。不是简单地嵌入webview,使用一下 JSBridge 就是 Hybrid 了。而是取长补短,让 WebView 和 Native 技术携手构造更优秀的应用体验,创造属于自己的小程序框架和能力。

Code Review Best Practices

非常细致的介绍了 code review 的整个流程。

  • 为什么需要,是什么,什么时候需要 code review

  • 在 code review 前需要做哪些准备工作

  • 如何执行 code review

  • code review 的一些示例

Securing iOS Certificates using Modern Cryptography

文章的主题为使用现代加密技术保护 iOS 证书(certificates)。我们平时测试,提交应用到AppStore 都需要用到苹果给我们的开发证书。阅读本文,我们可以学习到如何通过 openSSL 对 iOS 开发证书进行加密。

Design Patterns by Tutorials: MVVM

MVVM 作为解决 MVC(Massive View Controller) 最有效的解决方案,已经成为 iOS 程序员的必学模式之一。Ray 的这篇文章抛开传统设计模式教学那种枯燥的说教,而是先手把手的使用 MVVM 的方式来实现一个小 Demo,简单易懂。值得一提的是,这是很少的纯 MVVM 教程,不像大多数 MVVM 教程都喜欢打包讲一些 reactive 和 data binding 的东西,适合萌新选手。

Blurring the Lines Between MVVM and VIPER

VIPER 是又一个移动开发中流行的设计模式,初看 VIPER 中各个模块的分工,总会觉得和 MVVM 其实是有几分神似。这篇文章通过仔细分析 MVVM 和 VIPER 中各个组件的责任划分,认为 MVVM 本质就是只有 V I 和 E 的 VIPER。当业务变得复杂时,VIPER 可以衍生出 Presenter 和 Router 来保证职责划分,所以一个动态调整的 VIPER 模式相比简单的 MVVM 应该是一个更优的实践。

本文讨论内容有趣,但其思路和论证方法,都值得借鉴。

Why you should not name your @IBActions didTapButton

我们有时会在代码中看到 @IBAction 方法被命名为didTapCancelButton、didTapSaveButton或是didHitSend、cancelButtonTapped等类型的名称。但我认为这样是错误的,首先因为 Target-Action 是命令模式而不是委托模式,应该命名为undo、deleteBackward、lowercaseWord或scrollToEndOfDocument这样的名字。其次我们在编译时并不知道 sender 具体是谁,所以我们不应在方法名称中指定 sender 的类型。

SceneKit 与 ARKit 专题

SceneKit 系列文章是作者在学习 Ray Wenderlich 的 SceneKit 教程《3D Apple Games by Tutorials》时做的学习笔记与心得体会,共有26篇文章,内容翔实。ARKit 专题文章还在持续更新中,包括制作类似 AR Stack 游戏的教程、对官方 AR Demo 的解读以及对 ARKit 1.5 新增的图片识别功能的介绍等等。

Custom Keyboard Extensions: Getting Started

自定义键盘扩展的入门教程,从 0 到 1 的讲解如何创建一个摩尔斯电码键盘,包括自定义键盘的界面,自适应键盘配色方案,自动纠正和建议,请求权限等内容。

A Better MVC

很多 iOS 开发不喜欢 MVC,因为 iOS 中的 MVC,往往违反封装原则,且容易形成臃肿的 ViewController。解决封装原则的问题,可以通过引入一个协调器(Coordinator),所有的子视图控制器或者视图,只负责显示,而如何显示它们,则委托给协调器去处理。 ViewController 臃肿的问题,需要知道,1 View Controller ≠ 1 screen of content, 可以将一个页面,分割成一个一个的子 ViewController,去负责页面元素的显示,而主 ViewController 只作为协调器存在。

该文作者近期参加了『App Builders 2018』,并也针对这个主题进行了分享,有兴趣的读者可以到 YouTube 上面观看这个分享视频——Dave DeLong - A Better MVC

iOS App 的加固保护原理

出自网易杭研的一篇对 iOS App 加固保护原理深度分析的好文。文中从如何对 App 破解出发,从以下 4 个大点阐述了 App 的加固原理:

  • 字符串混淆

  • 类名、方法名混淆

  • 程序结构混淆加密

  • 反调试、反注入等一些主动保护策略

Playground driven development in Swift

文章详细描述了如何去构建一个基于 Playground 的 App 开发环境,对于经常要开发 UI 界面的开发者来说,使用作者介绍的这一套流程,可以大大提高自己的开发效率。

Codable vs. ObjectMapper

作者分析了 Codable 和 ObjectMapper 的区别,Codable 相对来说比较简单易用,而 ObjectMapper 提供了更多高级功能,例如数据转换,数据验证,可读性更强的错误信息等等。并且作者也扩展了 Codable ,实现 ObjectMapper 的这几个主要的 feature,让我想起了之前看过的另一个项目 AnyCodable。想要扩展 Codable 但无从下手的同学可以考虑看看。

Inspect your app’s Documents directory in the Files.app

小技巧,如果我们在Info.plist中设置了LSSupportsOpeningDocumentsInPlace=YES和UIFileSharingEnabled=YES,就能够从苹果官方的文件管理器 Files 对 App 的 Documents 目录进行查看,更多信息可参考 苹果官方文档

网易HubbleData无埋点SDK在iOS端的设计与实现

这是一篇非常值得一看的文章,从代码埋点到可视化埋点再到无埋点,层层递进。更可贵的是,详细介绍了如何利用aop的方式实现无埋点的整个思路,和解决的一系列问题。从思想到方法都有了。

Reimplementation of Implicitly Unwrapped Optionals

为了提升类型检查的一致性,Swift 的下个版本计划对ImplicitlyUnwrappedOptional类型相关的一些操作进行重新实现,其实说到底所有的操作都是为了去掉ImplicitlyUnwrappedOptional类型,这样可选值类型就剩Optional,!则只是一个操作符而已,不包含ImplicitlyUnwrappedOptional这个特殊类型的含义。不过小编看了下所有的改动,目测应该都是可以用代码迁移器搞定的,大家不用特别担心下个版本需要做代码的大变动。

Swift, Plist and Two Smoking Scripts

有没有想过整个项目从前端到后端全部用 Swift 来开发?甚至包括脚本?本文介绍了怎样用 Swift 在十五分钟内开发一个能够帮助我们对项目设置进行检查的 Build Phase 脚本,值得一看。

工具

What's New in Swift 终极版

有人做了一个网站给 Swift,详细介绍每个版本的更新内容,你还可以选择具体的版本范围,然后就能看到这中间更新了什么。

音视频

App Builders 2018

App Builders Conference 是由来自欧洲各国的 Android 和 iOS 移动开发者一起举办的分享交流会。本次大会在瑞士举行,目前 YouTube 上已经收录有该大会的 26 个直播视频,平均每个视频约 30 mins,分享的内容从 Google AR 到 iOS 的 CoreML,从 Swift 到 App 架构,方方面面都有涉及。

其中本期周报中收录的『A Better MVC』一文也在该会上进行了分享。

关注我们

我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。

老司机 iOS 周报 #17 | 2018-05-02

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。

本期编辑

@没故事的卓同学@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折腾范儿_味精@张嘉夫@AidenRao@Parsifal, @叶孤城@aaaron7@方秋枋

正文到此结束
Loading...