最喜欢的WWDC 2018会议

今年,我未能通过WWDC的彩票,也错过了主题演讲直播,因为那天我在奥斯陆峡湾外的克里斯蒂安·拉迪奇(Christian Radich)上航行。 幸运的是,所有视频很快都可以在Apple Developer网站上找到,我们现在可以在Chrome或macOS上的非官方WWDC应用中观看它们。 我推荐WWDC macOS应用程序,因为它可以标记收藏夹和过滤器,还可以将播放速度调整为1.25或1.5,从而节省了一些时间。

今年WWDC将重点放在隐私,稳定性和速度上,这是我所希望的,这要归功于Apple工程师实现了这一目标,而且重新安装所谓的更稳定的iOS 12确实是现实。 作为一名iOS工程师,我喜欢把更多的精力放在我身上,这是关于Swift编程语言,Cocoa Touch中的新变化,Xcode的增强以及测试技巧。 我还想探索有关机器学习的更多信息,因此,我很高兴苹果公司通过引入Turi Create和Create ML对该技术进行了更多投资。

对我来说,API经常被弃用,并且很高兴知道它们,但是最重要的是投资于您的编程,调试和测试技能,您可以将其应用于许多其他平台。

去年收藏夹列表的下一个,下面是我最喜欢的个人笔记。 事物未按特定顺序列出。 希望你觉得它有用。

平台联盟国

如果您没有时间,则应仅观看此会话。 平台国情咨文就像开发人员的主题演讲一样,它突出了重要的变化。

  • 隐私:Apple确认其对隐私和安全的承诺,并在iOS 12上引入了密码管理功能和自动填充功能。生成强密码,与第三密码管理集成并从SMS消息快速填充OTP字段从未如此简单。 GateKeeper也得到了一些改进,并开始要求对应用程序进行公证。
  • iOS 12:性能大幅提升,Siri通过快捷方式支持,FaceTime中的群组调用和分组通知功能变得更加智能。 表情符号迷也介绍了Memoji。
  • macOS 10.14 Mojave:带有暗模式的更多内容。 他们主要使用Xcode在黑暗模式下进行演示,这看起来很酷。 今年的WWDC横幅广告提供了有关iOS和macOS跨平台应用程序的提示,这对于Marzipan来说是部分正确的,Marzipan是允许iOS应用程序在Mac上运行的一种方式。
  • Xcode 10:改进了代码编辑和源代码管理更改条形指示器。 使用内存调试工具进行调试,增强LLDB性能,尤其是用并行任务完全用Swift重写的新构建系统是令人振奋的消息。
  • Swift 4.2:如果您遵循swift repo,那么Swift 4.2可能并不奇怪。 Swift 5计划也有公告。
  • 机器学习:从未比这更热。 今年,我们看到了在机器学习方面的巨大投资,这些机器学习包括Create ML,Turi Create,Natural Language框架,CoreML 2和Vision中的新检测功能。
  • ARKit 2,watchOS 5,tvOS 12,AppStore Connect和AppStore Connect API是您不想错过的其他重要新闻。

Swift的新功能

与本次会议一起,我建议您阅读非常简洁的Swift 4.2摘要中的新增功能。 除了改善复杂性和运行时之外,Swift 4.2还提供了一些新功能:可迭代的枚举大小写,合成的Equatable和Hashable,用于改组的便捷函数,随机生成。 对我来说,显式处理隐式展开的可选内容的需求也是一种合理的变化。

可可触摸的新功能

这是对iOS 12即将进行的所有更改的简短介绍,以及有关如何成为一名优秀iOS公民的提示。 了解什么会影响滚动体验和预取技术,内存消耗和自动后备存储,以及如何从UIImageUIImageView获得最大UIImageView 。 AutoLayout引擎在性能上有很多改进,因此不会再困扰您。 对我来说,最令人满意的是将所有UIKit通知和类重组为嵌套类型,这使得代码推理非常容易。

充分利用Xcode的游乐场

我之前曾经写过关于Playground的文章,我很高兴Apple也在其中投入了很多。 人们进行交互和训练模型的方式令人着迷。 人们可能会质疑Playground在会话演示中的运作情况如何,但是我们无法抗拒Playground的新变化,例如逐步执行,标记渲染的改进以及使用自定义框架的难易程度。 现在,我们还可以通过订阅发布自己的Playground。

Core ML的新增功能

苹果去年通过引入Core ML开始了机器学习趋势。 Core ML功能强大,我们可能同时感到兴奋和沮丧,但是无法自定义它。 现在,这两个部分告诉我们如何实现自定义层和模型,以及如何减小模型大小(例如量化和灵活模型)的技术。 这为改进视觉在对象跟踪和自然语言框架的首次应用奠定了基础。 机器学习从未如此简单。

测试中的新功能

我不能错过任何测试课程,因为它是每天工作的一部分。 您的程序如何避免回归错误并无需任何测试即可进行重构?

本次会议展示了覆盖率的提高以及xccov工具的引入,以帮助我们在覆盖率报告的基础上构建自动化。 Xcode 10中的并行分布式测试可以为我们节省一些时间来喝咖啡。 另一个奇妙的消息是,测试具有多种顺序执行模式,可以避免由于隐式依赖性而导致的错误。

测试技巧和窍门🌟

这是我最喜欢的。 会话从单元集成和端到端测试类比解释的金字塔测试开始,然后是一些非常酷的提示和技巧。

  • 测试网络请求:我喜欢用URLSession分隔APIRequestAPIRequestLoader ,使用默认参数进行依赖注入以及在URLProtocol中自定义URLSessionConfiguration
  • 测试通知:通知是系统范围的,因此我尽量避免使用它。 这显示了如何使用默认参数注入依赖性以及如何使用自己的NotificationCenter而不是NotificationCenter.default来简化测试
  • 测试位置:使用LocationProviderLocationFetcher构建抽象。 如何在测试过程中使用自定义协议和代理协议进行模拟
  • 测试计时器:如何与计时器一起使用和模拟RunLoop行为

使用Xcode和LLDB进行高级调试

LLDB已得到改进,可以调试可靠性体验,AST上下文损坏,Swift类型解析等问题已成为过去。 我们可以回顾一下如何使用带有方便参数的常见LLDB命令,以及如何最好地使用Xcode断点。

UICollectionView游览Tour

我开始更多地使用UICollectionView而不是UITableView ,并且它也具有与NSCollectionView相同的代码,这比可怕的NSTableView更为舒适。

  • UICollectionViewLayout项目大小:我经常依靠UICollectionViewDelegateFlowLayout指定项目大小,但是在观看了本次会议之后,我觉得将与大小相关的代码移动到Layout对象似乎更像是一种好方法
  • 马赛克布局:这不是新事物,但是很值得再次观看。 您将学习如何使用缓存的布局属性实现自定义布局
  • 数据源更新:没想到苹果会提到这一点,但这是关于UICollectionView如何处理批处理更新的很好的教训。 我之前已经以一种更好的方法(用diff框架更新Swift中的UICollectionView数据)写过这篇文章,该文章吸引了很多人。 在本次会议中,我们需要记住排序在数据源更新中很重要,而在集合视图更新中则无关紧要

迅捷泛型

自从一开始,泛型就是Swift的核心功能,我们都知道它帮助我们实现可以以类型安全的方式与多种类型一起使用的泛型代码。 本节课提醒我,我学到的东西还不够多,尤其是背后的合理设计。

这些课程展示了Collection协议及其协议继承: MutableCollectionBidirectionalCollectionRandomAccessCollection以及如何将它们组合在一起以为遵循者提供通用功能。 每个协议(尤其是IndexElementassociatedtype要求非常小,并且对协议具有足够的约束以在其协议扩展中实现许多必要的功能,这让我大开眼界。 我非常喜欢阅读开放源代码,因此查看此类协议的源代码有助于我理解更多。

关于Fisher Yates随机算法的部分详细介绍了如何提出必要的协议,同时又使它们通用

注意当他们提到countmap ,您可以了解更多每种具体类型如何与协议扩展中的定制点挂钩的信息。

最后在类继承中学习带协议的Liskov替换原理。 您还应该有效地使用Collections,以了解如何利用Collection便捷功能。

您可以信任的数据

尽管Codable在数据完整性方面可以提供很多好处,但是要确保您收到的数据实际上是正确格式和结构正确的数据,对此还是很了解的。 CommonCrypto还是新的iOS SDK的一部分,因此您不需要我的Arcane库即可在应用中处理加密和哈希。

拥抱算法

就像演讲者和虚构的经理Crusty之间的对话一样,这是最令人愉悦的观看方式。 在这里,我将学习如何了解算法的复杂性,以及如何利用已经针对性能进行了优化的内置Foundation函数。

在本次会议之后,我无济于事,只能去Swift回购来立即阅读Algorithms.swift文件。

图像和图形最佳实践

了解图像编码和解码如何通过数据和图像缓冲区工作以及如何影响内存和性能。 有一些诸如降采样的技术可以解决此问题。 这也建议不要使用后备存储,而应使用UIImageView

Turi创建指南

我之前写过关于Turi Create的文章,但这只是Turi提供的许多任务的表面。 今年,苹果发布了Turi Create 5,具有样式转换任务,视觉功能打印,GPU加速和推荐模型的改进。 我等不及要探索了。 并且,如果您查看Create ML框架中的MLDataTable ,看起来Turi的SFrame看起来很SFrame