[ WWDC2018 ] - 来自一线开发者的技术笔记

2018年6月4日,苹果全球开发者大会(WWDC)在美国圣何塞如期举行。今年的WWDC聚集了来自77个国家的6000多名开发者,与此同时,全球苹果开发者的数量已经超过了2千万。作为一年一度的开发者盛会,本次WWDC发布了以iOS12为代表的新版操作系统,开设了80多个session课程以及工程师现场答疑活动。今年,字节跳动也有iOS开发者代表前往美国当地现场参与了WWDC,同时iOS开发者们也就session课程进行了深入学习和总结,期待与国内的iOS开发者们共同交流。

01.发布会

本次WWDC发布了iOS12、macOS Mojave、watchOS 5以及tvOS 12在内的新版操作系统。两个半小时的发布会亮点丰富,惊喜不断。

iOS12 -性能与新特性齐头并进

iOS12主打对性能和稳定性的改进,同时在AR、Siri、emoji等方向做出了重大更新。

1.专注性能优化:所有支持运行iOS11的设备都将支持运行iOS12。得益于CPU的响应机制的优化,iOS12在新旧机型上都能得到良好的表现,具体的优化将在下文详述。

image

2.AR:苹果联合皮克斯在内的3D巨头创造了一种新的AR格式,USDZ,同时对ARKit进行了多项升级使其更好的融入生活。

3.Siri快捷短语:致力于让siri能在合适的时间被唤醒和服务用户

4.防沉迷:用户可以为某个app设置防沉迷时间,家长还可以跨越设备访问获取孩子的活动报告,为孩子开启防沉迷功能。

5.Memoji:支持用户创建属于自己的emoji表情。

image

watchOS 5 - 成为更好的智能助手

watchOS立志成为人类更好的智能助手,此次也在人工智能方面做出了改进。

1.更好的健身助手:通过大数据分析,watchOS能更准确的估计运动消耗,并支持好友间的竞赛。

2.更智能的Siri:和iOS12同步支持快捷语句、提供更准确的预测功能。

3.对讲机功能:支持一对一的对讲。

tvOS 12 - 视觉和听觉的盛宴

最新发布的tvOS 12为Apple TV 4K加入了杜比全景声支持,使用户在4K和HDR画质的基础上得到更好的观影体验。

macOS Mojave - 更专业,也更亲民

新版macOS主打着既能满足专业人士工作需要、也能更好的服务大部分用户的理念。基于这样的理念,macOS Mojave引入了特别的更新内容。

1.夜间模式:暗色的背景为专业的图像处理人员、视频编辑人员和开发者带来了更舒适的体验;

image

2.桌面文件智能分组,让用户从杂乱的桌面中解脱出来

3.全新的Mac App Store

4.iOS app的移植 - 包括股市、语音备忘录和家庭:macOS Mojave发力了一项令开发者期待已久的实验,通过与iOS共享Foundation等底层框架,让iOS app在仅需少部分代码改动的情况下被移植到Mac OS上。这项瞩目的功能目前在苹果原生app上得到了实践,并预计在2019年开放给广大第三方开发者们。

02.Sessions

对于iOS开发者而言,苹果在WWDC上为开发者带来的一系列课程则更有实践意义。通过这些课程,开发者可以更细致的了解iOS12的新特性以及其在开发上的应用;而课程中对原理和最佳实践的讲解也对开发者提供了丰富的指导。下面我们将以iOS开发者的角度窥探WWDC 2018带来的革新。

正如苹果的高级副总裁Craig Federighi在发布现场所说的,iOS12在专注于性能和稳定性的同时,对ARKit、Siri、通知中心进行了改进。想要了解iOS12具体带来了哪些新特性,Cocoa Touch革新 一文是一个精准的切入点。从这篇文章中,我们能了解iOS12在以下几个方面做出了重大更新:

性能提升

iOS12对性能和稳定性的专注,使得它即将成为支持设备最多的iOS系统版本。

高性能 AutoLayout High Performance Auto Layout

iOS12对AutoLayout做出了革命性的性能优化。此前,AutoLayout一直是业务开发中一大性能瓶颈,以至于部分app不得不忍痛舍弃对AutoLayout的使用来缓解掉帧等性能问题。而这些问题在iOS12之后很可能成为历史。

文章通过对AutoLayout底层原理的讲解,向读者展示了AutoLayout的运作方式。同时给出了AutoLayout使用上的最佳实践,帮助开发者编写一个高性能的布局。

优化 App Assets Optimizing App Assets

在一个iOS app中,资源文件也是及其重要的一部分。如何在应用中通过使用assets达到最好的视觉效果和最高效的使用视图资源,也是每个开发者应该关注的部分。

文章概述了iOS12针对资源文件产出的新特性。介绍了如何使用asset catalog来最优化的组织、优化、制作视图资源,如何更好的简化设计和开发人员之间工作流程。通过使用视图asset,可以提高应用的交付质量,占用更小的空间,受益到更多的用户。

使用Xcode做更快的构建 Building Faster in Xcode

除了iOS12运行上的性能提升,苹果还在最新发布的Xcode10上对构建速度与开发效率进行了优化。

文章讲述了Xcode 10与提高构建速度和开发效率相关的新特性,从工具、环境、代码以及语言语法等多个方面介绍了加快构建速度的细节。通过了解Xcode在构建速度上的优化原理,开发者可以更好更高效地进行日常开发工作。

Swift

Swift从诞生以来就是每年WWDC备受关注的焦点之一。越来越多的开发者和企业开始转向于使用Swift进行开发,Swift相关的课程也越来越受到包括字节跳动的工程师们在内的开发者的重视。

Swift 4.2革新 What's new in Swift

WWDC2018发布了Swift 4.2版本。主打两方面的更新:一是关注提升开发人员生产力,开发者可以看到项目构建速度的提升和利于开发的语言改进;二是在二进制兼容性方面进行了大量的努力。

文章介绍了Swift 4.2在这两方面的革新,同时对部分改进细节进行了原理剖析。

Swift 泛型 Swift Generics

泛型设计对于Swift语言来说是一个很重要的特性,能够既保持静态类型的特点又能够达到代码重用的目的。

文章主要探讨了Swift泛型特性设计上的思考和新特性的应用方法,帮助开发者更好的理解和使用泛型这一特性。

了解Swift Package Manager Getting to Know Swift Package Manager

包管理一直软件开发和管理中重要的一环。Swift Package Manager是Apple官方提供的软件包管理器。

文章深入介绍了Swift Package Manager的优势、基本概念和常用用法,记忆它的架构和设计思想。同时阐述了为什么Swift Package Manager是一个安全、高效而且使用简单的软件包管理器。

创建属于你自己的 Swift Playgrounds 订阅 Create Your Own Swift Playgrounds Subscriptio

苹果推崇人人都能使用Swift编程,在Swift的教育方向上做出了持续的努力。Swift Playgrouds就是为此诞生的一款革命性的iPad应用。 

文章介绍了如何利用WWDC2018中新推出的模板工具制作出属于自己的 Playground Book 以及如何托管自己的订阅源并分享给他人。

AR

今年的WWDC发布会上,ARKit的更新作为iOS12的一大亮点被隆重介绍。

ARKit2 革新 What’s New in ARKit 2

ARKit 2是本次WWDC重点推出的更新,它使得开发生动的AR体验的程序变得更容易,并提供了全新的方式与真实世界进行交互。

文章主要讲述了ARKit 2的新特性。ARKit 2开始支持多台iOS设备同时查看同一AR场景或享受多人AR游戏,及提供2D图像和3D物体的检测与跟踪等新能力。

AR Quick Look 概览 AR Quick Look

AR Quick Look 是iOS12推出的在AR场景中快速展示3D模型的新技术,使用便捷。

文章主要介绍了预览页QLPreviewController的使用以及新型的3D模型文件格式.usdz,并且介绍了官方对于创建并优化3D模型的建议。开发者可以使用Xcode10自带的usdz Converter工具,轻易地将现有的3D模型资源打包成.usdz文件,集成到App或者Html中,快速预览AR场景中的3D效果。

最佳实践

WWDC中,除了对iOS12新特性的介绍,还有不少课程为开发者提供各iOS版本通用的原理和最佳实践的讲解,指导开发者提升代码稳定性、优化性能。

高效使用集合 Using Collections Effectively

集合是日常开发中频繁接触的对象,理解集合、使用好集合也是每个iOS开发工程师必备的技能。

文章介绍了和集合相关的概念, 用法, 以及一些性能上的注意点, 从而指导开发者高效, 安全, 优雅的使用集合。

深入解析iOS内存 iOS Memory Deep Dive

内存是有限且系统共享的资源。对内存不合理的使用很有可能会引发OOM等严重问题。

文章介绍了虚拟内存分配机制以及开发者需要控制的内存占用部分,并推荐了通过命令行工具分析记录内存信息memgraph文件的调试方式。此外,苹果工程师也在此给出了一些不同场景下如何合理使用内存的建议。

图像最佳实践 Image and Graphics Best Practices

在日常app开发中,图片处理是开发者们经常遇到的挑战。如何让图片展示更快、占用内存更少?

文章重点关注iOS系统如何处理图片,包括UIImage,UIImageView,custom drawing in UIKit,advanced CPU and GPU techniques四部分,旨在帮助app提高性能,减少内存占用。

测量和优化HLS性能 Measuring and Optimizing HLS Performance

HTTP Live Streaming是苹果推出的流媒体网络传输协议。

文章通过对流媒体直播回放过程的解刨,讲述如何准确测量HLS流媒体性能,定位和优化HLS性能瓶颈以及如何正确使用Master Playlists来提升用户观看体验。

Web安全策略 Strategies for Securing Web Content

帐号登录

web是app中经常使用的,也是很容易受到安全攻击部分,它远远没有大家想象的安全。本文列出了常见的三种攻击手段:跨域攻击、预测执行攻击、窗口控制攻击,尤其是预测执行攻击,对于大家常用的UIWebView来说是根本无法防御的。本文总结了以往的安全防御手段,并介绍了新推出的Cross-Origin-Resource-Policy 和 Cross-Origin-Window-Policy,针对这三种攻击手段,给出了全面的防御手段。

计算机视觉和物体追踪 Vision with Core ML and Object Tracking in Vision

Vision提供了一个易于使用的API来处理许多计算机视觉任务,我们深入一个特别强大的特性在视频流中视觉跟踪对象,更好地理解如何请求处理程序的生命周期函数,性能和内存利用率。以及,使用CoreML模型在Vision框架上计算机视觉应用,学习使用自定义训练分类器和对象识别模型在一个相机捕捉和识别物体。

03.Lab

WWDC中还有苹果工程师现场答疑的活动。字节跳动的工程师也参与了现场答疑。与苹果工程师宝贵的交流记录也将在这里分享给大家。

WWDC 2018 Lab:哪些是我们最关心的问题?

04.结语

无论是产品发布、特性介绍,还是原理讲述、最佳实践,WWDC对开发者来说都是宝贵且实用的学习资料。字节跳动的开发者们期待着在共享WWDC学习资料的同时,也能有机会与国内众多的iOS开发者互相交流学习。

如果你喜欢科技,崇尚创新

如果你追求极致,认同工程师文化

请和我们一起,欢迎加入字节跳动头条研发客户端团队。

有兴趣的同学可以发送简历到:liujin.tina@bytedance.com

请在邮件标题标注意向工作城市(可选城市:北京/上海/深圳)

同时也期待能与各路小伙伴进行技术交流,技术交流相关事项可联系: yuxin@bytedance.com

本文总阅读量