老司机 iOS 周报 #116 | 2020-06-08

老司机 iOS 周报,只为你呈现有价值的信息。前端

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

新手推荐

🐕 3 steps to speed up storyboard

@极速男孩:storyboard 做为 iOS 的一种对 viewcontroller 的控制的方法被普遍使用,本文简单介绍了如何快速的使用 storyboard 来对你的 viewcontroller 进行管理。git

文章

🌟 🐕 TrampolineHook - 解决栈污染问题支持变参 Hook

本文是 TrampolineHook 框架系列文章最新的一篇。TrampolineHook 是一个中心重定向框架,能够经过一个函数替换/拦截全部你想要的函数的框架。若是对这个库不了解能够先看前面的几篇文章:github

本文主要讲该库在以前实现中的一个错误,关于上下文污染的问题,本文从汇编角度比较深刻的讲解了这个问题,但并不须要读者很了解汇编的内容,有兴趣的同窗能够看一下。json

🌟 🐕 移动前端开发和 Web 前端开发的区别是什么?

@张嘉夫:前端这门技术,从诞生发展至今不过寥寥十余年。若是说前十年是 PC 前端的时代,那后十年必定是属于移动前端的时代。特别是随着网络制式的发展,移动设备在全球范围内获得了空前的普及,在前端领域,Hybird Web、React Native、Weex、Flutter 等等一系列新的移动前端技术也如同雨后春笋般冒出来。在这篇来自阿里巴巴新零售淘系技术部的文章中,做者分享了其对于「移动前端开发和 Web 前端开发」的理解,具体包括前端发展史回顾、移动前端混合技术的前世此生以及对将来回归本源的探讨。swift

🌟 🐕 How the SwiftUI DSL Works

@莲叔:SwiftUI 算是 Swift 近几个大版本中最使人兴奋的 feature,虽然很多同窗在试水后都得出了目前还不成熟的判断,但这并不影响其定位了将来的 UI 开发方式。本篇文章做者尝试聊了聊 SwiftUI 实现中的一些关键技术,主要描述了 function builder 机制,文章比较浅显易懂,内容很少,比较适合新手学习。后端

🐎 🚧 A Type-Safe FileWrapper

@xiaofei86:在 Document Based Apps 中,NSDocument 做为最重要的基类,提供了自动保存、线程安全、iCloud 冲突解决等功能。NSDocument 能够持有 Data 和 FileWrapper 两种类型的文件数据。FileWrapper 为自定义文件类型的容器,本文经过示例简单讲述了 FileWrapper 的应用,有兴趣能够阅读原文了解,也能够经过苹果 官方文档 了解更多 Document Based Apps 的开发指南。安全

🐎 Dealing with memory limits in iOS app extensions

@老驴:Notification extension 和 share extension 算是 iOS 中前两年比较火爆的话题了,这两年彷佛热点过去,你们关注的也很少,苹果也没有在这块继续着力,framework 更新的也不多。网络

这位做者就在开发中遇到了内存上限问题,Notification extension 最高只能支持 24 MB 的内存占用,而 Share extension 最多支持 120 MB 的内存占用。而开发中最有可能遇到内存上限问题的就是图片或者是视频了,做者使用了一些有意思的办法来绕过这样的限制,有兴趣的不妨来看看。app

🐕 How We Use Feature Flagging on iOS

@老峰:Feature Flagging (又名 Feature Toggle、Flip 等)是一种容许控制线上功能开启或者关闭的方式,一般会采起配置文件的方式来控制。本文做者以 WordPress 为例讲解了经过 配置 Build Configurations 等在 iOS 中实现 Feature Flags,WordPress-iOS 是个开源项目,感兴趣的读者能够点这里阅读源码。

🐎 Decode and Flatten JSON with Dynamic Keys Using Decodable

@四娘:有时候后端下发的 JSON 文件会采起动态 key 的形式,那在 Codable 里该如何实现呢?这篇文章就介绍了如何动态 key 的结构该如何解析以及封装的方式。

代码

🌟 InterposeKit

@EyreFree:InterposeKit 是一个能够帮助咱们快速、优雅地在 Swift 中进行 Swizzle 的库,它的做者是 Peter Steinberger,你可能对这个名字没什么印象,但你可能听过他的另外一个开源库 —— Aspects。InterposeKit 是用纯 Swift 5.2 编写的,有完备的文档并通过了全面的测试。它能够用于 Objective-C 实例方法和被 @objc dynamic 修饰的 Swift 函数。推荐在 Swift 中有 Swizzle 需求的同窗一试,如下是一些关键点:

  • Interpose 直接修改方法的实现,这比基于 selector 的方式要好;
  • 能够经过调用 revert() 轻松实现钩子的撤销;
  • 纯 Swift 实现,而不是使用低效的 NSInvocation
  • 没有类型检查,虽然带来了一些 crash 风险但也更加灵活;
  • 必须手动指定结果类型两次,这是一种为了不使用 NSInvocation 或汇编的折衷;
  • 当类在运行时被加载时,延迟插入。

内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

若是你想找工做,点这里:www.yuque.com/iosalliance…

若是你想招人,点这里:www.yuque.com/iosalliance…

固然,也欢迎你关注咱们每一期的周报,咱们会在每期周报底部及时更新编辑内推岗位。

关注咱们

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

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息