欢迎 @方秋枋 加入周报的编辑的队伍。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
TensorFlow 社区在 TensorFlow Dev Summit 2018 上宣布将开源 Swift for TensorFlow 项目,现在终于正式发布了,这里是源码及示例 Models.
文章针对新闻类 App 内容页的技术实现进行了探索和分析。并将成果封装成三个框架:HybridPageKit、ReusableNestingScrollview 以及 WKWebViewExtension。
文章不仅从技术方案选择,组件化架构,加载速度优化给我们高屋建瓴地展示了新闻类的 Hybrid 技术应该如何构建,更重要地是开启了我们的脑洞:Hybrid应该怎么玩才有意思。不是简单地嵌入webview,使用一下 JSBridge 就是 Hybrid 了。而是取长补短,让 WebView 和 Native 技术携手构造更优秀的应用体验,创造属于自己的小程序框架和能力。
非常细致的介绍了 code review 的整个流程。
为什么需要,是什么,什么时候需要 code review
在 code review 前需要做哪些准备工作
如何执行 code review
code review 的一些示例
文章的主题为使用现代加密技术保护 iOS 证书(certificates)。我们平时测试,提交应用到AppStore 都需要用到苹果给我们的开发证书。阅读本文,我们可以学习到如何通过 openSSL 对 iOS 开发证书进行加密。
MVVM 作为解决 MVC(Massive View Controller) 最有效的解决方案,已经成为 iOS 程序员的必学模式之一。Ray 的这篇文章抛开传统设计模式教学那种枯燥的说教,而是先手把手的使用 MVVM 的方式来实现一个小 Demo,简单易懂。值得一提的是,这是很少的纯 MVVM 教程,不像大多数 MVVM 教程都喜欢打包讲一些 reactive 和 data binding 的东西,适合萌新选手。
VIPER 是又一个移动开发中流行的设计模式,初看 VIPER 中各个模块的分工,总会觉得和 MVVM 其实是有几分神似。这篇文章通过仔细分析 MVVM 和 VIPER 中各个组件的责任划分,认为 MVVM 本质就是只有 V I 和 E 的 VIPER。当业务变得复杂时,VIPER 可以衍生出 Presenter 和 Router 来保证职责划分,所以一个动态调整的 VIPER 模式相比简单的 MVVM 应该是一个更优的实践。
本文讨论内容有趣,但其思路和论证方法,都值得借鉴。
我们有时会在代码中看到 @IBAction 方法被命名为didTapCancelButton、didTapSaveButton或是didHitSend、cancelButtonTapped等类型的名称。但我认为这样是错误的,首先因为 Target-Action 是命令模式而不是委托模式,应该命名为undo、deleteBackward、lowercaseWord或scrollToEndOfDocument这样的名字。其次我们在编译时并不知道 sender 具体是谁,所以我们不应在方法名称中指定 sender 的类型。
SceneKit 系列文章是作者在学习 Ray Wenderlich 的 SceneKit 教程《3D Apple Games by Tutorials》时做的学习笔记与心得体会,共有26篇文章,内容翔实。ARKit 专题文章还在持续更新中,包括制作类似 AR Stack 游戏的教程、对官方 AR Demo 的解读以及对 ARKit 1.5 新增的图片识别功能的介绍等等。
自定义键盘扩展的入门教程,从 0 到 1 的讲解如何创建一个摩尔斯电码键盘,包括自定义键盘的界面,自适应键盘配色方案,自动纠正和建议,请求权限等内容。
很多 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 加固保护原理深度分析的好文。文中从如何对 App 破解出发,从以下 4 个大点阐述了 App 的加固原理:
字符串混淆
类名、方法名混淆
程序结构混淆加密
反调试、反注入等一些主动保护策略
文章详细描述了如何去构建一个基于 Playground 的 App 开发环境,对于经常要开发 UI 界面的开发者来说,使用作者介绍的这一套流程,可以大大提高自己的开发效率。
作者分析了 Codable 和 ObjectMapper 的区别,Codable 相对来说比较简单易用,而 ObjectMapper 提供了更多高级功能,例如数据转换,数据验证,可读性更强的错误信息等等。并且作者也扩展了 Codable ,实现 ObjectMapper 的这几个主要的 feature,让我想起了之前看过的另一个项目 AnyCodable。想要扩展 Codable 但无从下手的同学可以考虑看看。
小技巧,如果我们在Info.plist中设置了LSSupportsOpeningDocumentsInPlace=YES和UIFileSharingEnabled=YES,就能够从苹果官方的文件管理器 Files 对 App 的 Documents 目录进行查看,更多信息可参考 苹果官方文档。
这是一篇非常值得一看的文章,从代码埋点到可视化埋点再到无埋点,层层递进。更可贵的是,详细介绍了如何利用aop的方式实现无埋点的整个思路,和解决的一系列问题。从思想到方法都有了。
为了提升类型检查的一致性,Swift 的下个版本计划对ImplicitlyUnwrappedOptional类型相关的一些操作进行重新实现,其实说到底所有的操作都是为了去掉ImplicitlyUnwrappedOptional类型,这样可选值类型就剩Optional
有没有想过整个项目从前端到后端全部用 Swift 来开发?甚至包括脚本?本文介绍了怎样用 Swift 在十五分钟内开发一个能够帮助我们对项目设置进行检查的 Build Phase 脚本,值得一看。
有人做了一个网站给 Swift,详细介绍每个版本的更新内容,你还可以选择具体的版本范围,然后就能看到这中间更新了什么。
App Builders Conference 是由来自欧洲各国的 Android 和 iOS 移动开发者一起举办的分享交流会。本次大会在瑞士举行,目前 YouTube 上已经收录有该大会的 26 个直播视频,平均每个视频约 30 mins,分享的内容从 Google AR 到 iOS 的 CoreML,从 Swift 到 App 架构,方方面面都有涉及。
其中本期周报中收录的『A Better MVC』一文也在该会上进行了分享。
我们开通了公众号,每期发布时公众号会推送消息,欢迎关注。
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/wiki.atom 。
@没故事的卓同学,@四娘,@mmoaay,@享耳先森,@EyreFree,@Damonwong,@折腾范儿_味精,@张嘉夫,@AidenRao,@Parsifal, @叶孤城,@aaaron7,@方秋枋