老司机 iOS 周报 #2

1,807 阅读6分钟

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

新闻

TIOBE 2017年度语言揭晓:哦,我的上帝,是古老的 C

今年 C 语言并没有很强势,只是也没有其他增长很突出的语言,C 的增长率 1.69% 就成为了佼佼者。亚军是 Python ,增长了 1.21%。

2018 年 1 月的排行中,Swift 排名 12,OC 18,相比去年略有提升。

集成 iCloud、Passbook 或订阅类 iAP 将导致 App 无法转移

集成过 iCloud, Passbook 或订阅类 iAP 将导致 App 无法转移到别的开发者帐号,即使之前集成过,新版禁用也不行。

Apple 拿下 iPhone X 外形设计专利

美国专利商标局报告显示,苹果已经拿到了 iPhone X 的外形设计专利。不过据最新报道,此专利并非针对「刘海」造型提出,而是著重边框上的按键、天线断点、扬声器等处细节。另外,iPhone X 的「刘海」部分集成了多达 8 个传感器(比 iPhone 8 多 3 个),分别是红外镜头、泛光感应元件、点阵投影器。

让所有科技巨头“焦头烂额”的intel漏洞是什么

Intel CPU 爆出史上最大漏洞。腾讯安全联合实验室的这篇回答详细的介绍了漏洞的原理和影响。

文章

程序员如何在技术浪潮的更迭中保持较高的成长速度

冰霜的 17 年总结,标题改成《我是如何从霜菜到霜神》也不为过。技术人员都要面对如何成长的问题,冰霜在文章中结合自身介绍了他是如何进行高效学习的,值得借鉴思考。

QUIC 协议初探 - iOS实践

QUIC(Quick UDP Internet Connections)是基于 UDP 的 WEB 开发协议 TCP + TLS + HTTP2 = UDP + QUIC + HTTP2’s API,由 Google 开发,希望其取代 TCP,加快网页传输速度。还计划提交至 IETF,成为下一代的正式网络规范。文中详细介绍了 iOS 平台下集成方式及与 HTTP2 的对比数据。

Basics of parallel programming with Swift 🚧

非常详细的介绍了 Swift 中并发编程涉及到的概念,你值得拥有。

如何实现 React Native 里的页面导航系统

RN 的导航和跳转一直是一个需要解决的问题。作者总结对比了现有的几个开源方案,并阐述了自己的解决思路。

阮一峰:比特币入门教程

数字货币已经成为新的风口。文章从技术角度通俗易懂的介绍了比特币的技术原理及基本概念。

Detecting screen capturing in iOS 11

随着教育、娱乐等领域付费视频服务的兴起,怎样防止付费内容的流失与传播成为了一个很重要的问题,本文详细阐述并演示了如何在 iOS 11 上实现对用户屏幕录制或镜像操作进行侦测的方法,值得一看。

工具

App Sight

查看主流 app 都用了哪些第三方服务和 SDK 。

代码

Kickstarter 开源了他们的客户端

Kickstarter 开源了他们的客户端代码,里面有非常多可以学习的内容,例如:

  • AppEnviroment 的抽象:所有状态都用一个全局的 Enviroment 去保存,包括了缓存,设备状态,用户等等,有了这一个抽象的存在就意味着测试时可以随意模拟和切换状态,在测试和监控复现 bug 时非常有用。
  • 可运行的文档:使用 Playground 去搭建 API 文档,UI 的格式可以通过 PlaygroundLiveView 即时查看,构建出了一个类 REPL 的调试环境出来。并且每次 pull request 也会尝试编译 playground 里的代码,如果 API 进行了修改,那就让我们知道该更新文档了。美中不足是目前 Playground 对于 framework 的支持很一般,我们使用 Carthage 或者 Cocoapods 的话需要做很多 setup 才行。
  • ...

相关资料:

RxFlow

RxSwift 社区推出的基于 Coordinator 模式的响应式导航框架。

LSAnimator by Lision

基于多维链表实现的 iOS 链式动画库,相比业界另外一个知名 Swift 动画库 IBAnimatable,有如下特性:

  • 支持多链式动画,并发执行多条动画链;
  • 每个动画节点采用 CAAnimationGroup 实现,从而支持单动画节点复合动画;
  • 提供 OC 版;
  • 侧重于对动画的深度定制。

OOMDetector

OOMDetector 是腾讯开源的一个 iOS 内存监控组件,应用此组件可以帮助你轻松实现 OOM 监控、大内存分配监控、内存泄漏检测等功能:

  • OOM 监控:监控 OOM,Dump 引起爆内存的堆栈;
  • 大内存分配监控:监控单次大块内存分配,提供分配堆栈信息;
  • 内存泄漏检测:可检测 OC 对象、Malloc 堆内存泄漏,提供泄漏堆栈信息。

DeepDiff

大家在工作中应该经常遇到数据集合更新,然后我们手动 diff 之后刷新 TableView 的情况,但这样的代码重复也容易出错。

DeepDiff 这个框架把这个过程地封装了起来。只要我们直接传入旧的集合和新的集合,然后把 diff 的结果交给 TableView 直接刷新就可以了,下面是代码示例:

let changes = diff(
    old: oldItems, 
    new: newItems, 
    reduceMove: true
)

tableView.reload(changes: changes, completion: { _ in })

并且它在性能方面的表现也很棒,官方的介绍页里有一个简单的性能对比,排名第一。

quicktype

quicktype 可以根据给出的 JSON 数据推断出数据类型,然后输出具体的类型模型,支持 Swift、C++、Go、Java、C# 等语言。支持 Xcode 9,使用得当可以给我们的开发带来一定的便利。

音视频开发进阶指南:基于Android与iOS平台的实践

作者是唱吧的音视频架构师。全面的介绍了音视频开发的基础知识,也结合了移动开发的相关技术(FFmpeg、OpenGL ES)进行了介绍。

音视频

阿尔法狗 AlphaGo 2017 🚧

阿尔法狗(AlphaGo)官方纪录片,全方位展示了人机大战的过程,更尽可能多地揭示了人类思维和未来人工智能的工作方式。

Testing in iOS

raywenderlich 的付费视频课程(第一部分可以免费观看)。视频课程分为:单元测试基本概念、单元测试实战和 UI 测试实战三个部分。

本期编辑

@没故事的卓同学@四娘@mmoaay@享耳先森@EyreFree

微信打赏

感谢您的支持。

微信支付

说明

🚧 表示需翻墙