阅读更多

1顶
1踩

行业应用

原创新闻 开发者所需要知道的 iOS 11 SDK 新特性

2017-06-07 14:22 by 副主编 jihong10102006 评论(0) 有22693人浏览

年纪大了过了能熬夜看 WWDC 的时代了,但是还是在小小宝的哭闹和妈妈大人换尿布的催促中起了个大早。于是算趁着“热乎”把 WWDC 2017 的 Keynote 看完了。和往年差不多,虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,新品发布等功能。作为技术人员,可能接下来的 session 会更有意义。要用一句话来评价今年 Keynote 所展现出来的内容的话,就是小步革新。大的技术方面可以说只有 ARKit 可堪研究,但是我们还是看到了类似跨 app 拖拽,新的 Files 应用这样进一步突破 iOS 原有桎梏的更新 (iMessage 转账什么的就不提了,我大天朝威武,移动支付领域领先世界至少三年)。iOS 11,特别是配合新的硬件,相信会给用户带来不错的体验。

作为 iOS 开发者,和往年一样,我整理了一下在可能需要关注的地方。

新增框架

新加入 SDK 的大的框架有两个,分别是负责简化和集成机器学习的 Core ML 和用来创建增强现实 (AR) 应用的 ARKit。

Core ML

自从 AlphaGo 出现以来,深度学习毫无疑问成了行业热点。而 Google 也在去年就转变 Mobile-first 到 AI-first 的战略。可以说一线的互联网企业几乎都在押宝 AI,目前看来机器学习,特别是深度学习是最有希望的一条道路。

如果你不是很熟悉机器学习的话,我想我可以在这里“僭越”地做一些简介。你可以先把机器学习的模型看作一个黑盒函数,你给定一些输入 (可能是一段文字,或者一张图片),这个函数会给出特定的输出 (比如这段文字中的人名地名,或者图片中出现的商店名牌等)。一开始这个模型可能非常粗糙,完全不能给出正确的结果,但是你可以使用大量已有的数据和正确的结果,来对模型进行训练,甚至改进。在所使用的模型足够优化,以及训练量足够大的情况下,这个黑盒模型将不仅对训练数据有较高的准确率,也往往能对未知的实际输入给出正确的返回。这样的模型就是一个训练好的可以实际使用的模型。

对机器学习模型的训练是一项很重的工作,Core ML 所扮演的角色更多的是将已经训练好的模型转换为 iOS 可以理解的形式,并且将新的数据“喂给”模型,获取输出。抽象问题和创建模型虽然并不难,但是对模型的改进和训练可以说是值得研究一辈子的事情,这篇文章的读者可能也不太会对此感冒。好在 Apple 提供了一系列的工具用来将各类机器学习模型转换为 Core ML 可以理解的形式。籍此,你就可以轻松地在你的 iOS app 里使用前人训练出的模型。这在以前可能会需要你自己去寻找模型,然后写一些 C++ 的代码来跨平台调用,而且难以利用 iOS 设备的 GPU 性能和 Metal (除非你自己写一些 shader 来进行矩阵运算)。Core ML 将使用模型的门槛降低了很多。

Core ML 在背后驱动了 iOS 的视觉识别的 Vision 框架和 Foundation 中的语义分析相关 API。普通开发者可以从这些高层的 API 中直接获益,比如人脸图片或者文字识别等。这部分内容在以前版本的 SDK 中也存在,不过在 iOS 11 SDK 中它们被集中到了新的框架中,并将一些更具体和底层的控制开放出来。比如你可以使用 Vision 中的高层接口,但是同时指定底层所使用的模型。这给 iOS 的计算机视觉带来了新的可能。

Google 或者 Samsung 在 Android AI 上的努力,大多是在自带的应用中集成服务。相比起来,Apple 基于对自己生态和硬件的控制,将更多的选择权交给了第三方开发者。

ARKit

Keynote 上的 AR 的演示可以说是唯一的亮点了。iOS SDK 11 中 Apple 给开发者,特别是 AR 相关的开发者带来了一个很棒的礼物,那就是 ARKit。AR 可以说并非什么新技术,像是 Pokémon Go 这样的游戏也验证了 AR 在游戏上的潜力。不过除了 IP 和新鲜感之外,个人认为 Pokémon Go 并没有资格代表 AR 技术的潜力。现场的演示像我们展示了一种可能,粗略看来,ARKit 利用单镜头和陀螺仪,在对平面的识别和虚拟物体的稳定上做得相当出色。几乎可以肯定,那么不做最早,只做最好的 Apple 似乎在这一刻回到了舞台上

ARKit 极大降低了普通开发者玩 AR 的门槛,也是 Apple 现阶段用来抗衡 VR 的选项。可以畅想一下更多类似 Pokémon Go 的 AR 游戏 (结合实境的虚拟宠物什么的大概是最容易想到的) 能在 ARKit 和 SceneKit 的帮助下面世,甚至在 iPad Pro 现有技能上做像是 AR 电影这样能全方位展示的多媒体可能也不再是单纯的梦想。

而与之相应的,是一套并不很复杂的 API。涉及的 View 几乎是作为 SceneKit 的延伸,再加上在真实世界的定为也已经由系统帮助处理,开发者需要做的大抵就是将虚拟物体放在屏幕的合适位置,并让物体之间互动。而利用 Core ML 来对相机内的实际物体进行识别和交互,可以说也让各类特效的相机或者摄影 app 充满了想像空间。

Xcode

编辑器和编译器

速度就是生命,而开发者的生命都浪费在了等待编译上。Swift 自问世以来就备受好评,但是缓慢的编译速度,时有时无的语法提示,无法进行重构等工具链上的欠缺成为了最重要的黑点。Xcode 9 中编辑器进行了重写,支持了对 Swift 代码的重构 (虽然还很基础),将 VCS 提到了更重要的位置,并添加了 GitHub 集成,可以进行同局域网的无线部署和调试。

新的编译系统是使用 Swift 重写的,在进行了一些对比以后,编译速度确实有了不小的提升。虽然不知道是不是由于换成了 Swift 4,不过正在做的公司项目的总编译时间从原来的三分半缩短到了两分钟半左右,可以说相当明显了。

Xcode 9 中的索引系统也使用了新的引擎,据称在大型项目中搜索最高可以达到 50 倍的速度。不过可能由于笔者所参加的项目不够大,这一点体会不太明显。项目里的 Swift 代码依然面临失色的情况。这可能是索引系统和编译系统没有能很好协同造成的,毕竟还是 beta 版本的软件,也许应该多给 Xcode 团队一些时间 (虽然可能到最后也就这样了)。

由于 Swift 4 编译器也提供了 Swift 3 的兼容 (在 Build Setting 中设置 Swift 版本即可),所以如果没有什么意外的话,我可能会在之后的日常开发中使用 Xcode 9 beta,然后在打包和发布时再切回 Xcode 8 了。毕竟每次完整编译节省一分半钟的时间,还是一件很诱人的事情。

这次的 beta 版本质量出人意料地好,也许是因为这一两年来都是小幅革新式的改良,让 Apple 的软件团队有相对充足的时间进行开发的结果?总之,Xcode 9 beta 现在已经能很好地工作了。

Named Color

这是个人很喜欢的一个变化。现在你可以在 xcassets 里添加颜色,然后在代码或者 IB 中引用这个颜色了。大概是这样的:

像是使用 IB 来构建 UI 的时候,一个很头疼的事情就是设计师表示我们要不换个主题色。你很可能需要到处寻找这个颜色进行替换。但是现在你只需要在 xcassets 里改一下,就能反应到 IB 中的所有地方了。

其他值得注意的变更

剩下的都是些小变化了,简单浏览了下,把我觉得值得一提的列举出来,并附上参考的链接。
  • 拖拽 - 很标准的一套 iOS API,不出意外地,iOS 系统帮助我们处理了绝大部分工作,开发者几乎只需要处理结果。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列专用的 delegate 来表明拖拽的发生和结束。而你也可以对任意 UIView 子类定义拖拽行为。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多点触控的屏幕,所以可能你需要对一次多个的拖拽行为做些特别处理。
  • FileProvider 和 FileProviderUI - 提供一套类似 Files app 的界面,让你可以获取用户设备上或者云端的文件。相信会成为以后文档相关类 app 的标配。
  • 不再支持 32 位 app - 虽然在 beta 1 中依然可以运行 32 位 app,但是 Apple 明确指出了将在后续的 iOS 11 beta 中取消支持。所以如果你想让自己的程序运行在 iOS 11 的设备上,进行 64 位的重新编译是必须步骤。
  • DeviceCheck - 每天要用广告 ID 追踪用户的开发者现在有了更好地选择 (当然前提是用来做正经事儿)。DeviceCheck 允许你通过你的服务器与 Apple 服务器通讯,并为单个设备设置两个 bit 的数据。简单说,你在设备上用 DeviceCheck API 生成一个 token,然后将这个 token 发给自己的服务器,再由自己的服务器与 Apple 的 API 进行通讯,来更新或者查询该设备的值。这两个 bit 的数据用来追踪用户比如是否已经领取奖励这类信息。
  • PDFKit - 这是一个在 macOS 上已经长期存在的框架,但却在 iOS 上姗姗来迟。你可以使用这个框架显示和操作 pdf 文件。
  • IdentityLookup - 可以自己开发一个 app extension 来拦截系统 SMS 和 MMS 的信息。系统的信息 app 在接到未知的人的短信时,会询问所有开启的过滤扩展,如果扩展表示该消息应当被拦截,那么这则信息将不会传递给你。扩展有机会访问到事先指定的 server 来进行判断 (所以说你可以光明正大地获取用户短信内容了,不过当然考虑到隐私,这些访问都是匿名加密的,Apple 也禁止这类扩展在 container 里进行写入)。
  • Core NFC - 在 iPhone 7 和 iPhone 7 Plus 上提供基础的近场通讯读取功能。看起来很 promising,只要你有合适的 NFC 标签,手机就可以进行读取。但是考虑到无法后台常驻,实用性就打了折扣。不过笔者不是很熟这块,也许能有更合适的场景也未可知。
  • Auto Fill - 从 iCloud Keychain 中获取密码,然后自动填充的功能现在开放给第三方开发者了。UITextInputTraits 的 textContentType 中添加了 username 和 password,对适合的 text view 或者 text field 的 content type 进行配置,就可以在要求输入用户名密码时获取键盘上方的自动填充,帮助用户快速登录。
暂时先这么多,我之后如果发现什么有意思的事情再逐渐补充。如果你觉得还有什么值得一提的变化,也欢迎在评论里留言。

引用
感谢作者授权发布,版权归原作者所有,未经允许,请勿转载。
作者:王巍(@onevcat),江湖人称“喵神”,iOS 和 Unity3D 开发者,旅居日本,目前供职于 LINE,著有《Swifter - 100 个 Swift 必备 tips》,同时也是翻译项目 ObjC 中国的组织者和管理者,维护 VVDocumenter-Xcode 及 Kingfisher 等开源项目。

  • 大小: 248.2 KB
  • 大小: 105.7 KB
  • 大小: 63.8 KB
1
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 开发者所需要知道的iOS7SDK新特性

    开发者所需要知道的iOS7SDK新特性.春风又绿加州岸,物是人非又一年。WWDC2013keynote落下帷幕,新的iOS开发旅程也由此开启。在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢。同去年一样,我会先简单纵览地...

  • 开发者所需要知道的 iOS 9 SDK 新特性 - OPEN资讯1

    开发者所需要知道的 iOS 9 SDK 新特性 - OPEN资讯1

  • 开发者所需要知道的 iOS 10 SDK 新特性(苹果ios开发新特性)

    开发者所需要知道的 iOS 10 SDK 新特性(苹果ios开发新特性)

  • 开发者所需要知道的 iOS 10 SDK 新特性

    总览 距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数。在我们回顾过去四五年 iOS 系统的发展的时候,不免感叹变化速度之快,迭代周期之短。...Apple 近年都是在 WWDC 发布新的系统

  • 开发者所需要知道的iOS7 SDK新特性

    在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢。同去年一样,我会先简单纵览地介绍iOS7中我个人认为开发者需要着重关注和学习的内容,之后再陆续对自己感兴趣章节进行探索。计划继承类似WWDC2012的笔记的...

  • iOS 开发者需要知道的iOS 8 SDK新特性

    这是一个千呼万唤始出来的特性,也是一个可以发挥无限想象力的特性。现在 Apple 允许我们在 app 中添加一个新的 target,用来提供一些扩展功能:比如在系统的通知中心中显示一个自己的 widget,在某些应用的 Action ...

  • WWDC总结:开发者需要知道的iOS 9 SDK新特性

    本文为王巍(@onevcat)对WWDC上透露的iOS 9 SDK新特性的总结,分享给广大的iOS开发者。年年岁岁花相似,岁岁年年人不同。今年的 WWDC 一如既往的热闹,得益于 Apple 的随机抽选机制,这两年有更多的中国开

  • 开发者所需要知道的iOS6 SDK新特性

    iOS6 beta和相应的SDK已经放出了,WWDC2012要进入session环节了。iOS6无疑是这届WWDC的重点,在keynote上面对消费...这里先大概把iOS6里新增的开发者可能用到的特性做个简单的整理。之后我也会挑一些自己感兴趣的se

  • java计算器源码.zip

    java毕业设计源码,可供参考

  • FRP Manager-V1.19.2

    Windows下的FRP图形化客户端,对应FRP版本0.61.1,需要64位操作系统

  • 基于优化EKF的PMSM无位置传感器矢量控制研究_崔鹏龙.pdf

    基于优化EKF的PMSM无位置传感器矢量控制研究_崔鹏龙.pdf

  • 旧物置换网站(基于springboot,mysql,java).zip

    旧物置换网站的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发 环境。该旧物置换网站包括管理员、用户、卖家。其主要功能包括管理员:首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等,卖家后台:首页、个人中心、旧物类型管理、旧物信息管理、置换交易管理。前台首页;首页、旧物信息、网站公告、个人中心、后台管理等,用户后台:首页、个人中心、旧物信息管理、置换交易管理、用户可根据关键字进行信息的查找自己心仪的信息等。 (1)用户功能需求 用户进入前台系统可以查看首页、旧物信息、网站公告、个人中心、后台管理等操作。前台首页用例如图3-1所示。 (2)管理员功能需求 管理员登陆后,主要功能模块包括首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等功能。 关键词:旧物置换网站,Mysql数据库,Java技术 springboot框架

  • 上位机开发,对桥梁、环境等传感器传输的数据进行采集并入库,以便用于系统平台对数据进行处理分析(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

  • 质子号.zip

    航天模拟器文件、蓝图、代码

  • 两级式单相光伏并网仿真研究:MATLAB 2021a版本下的DC-DC变换与桥式逆变技术实现功率跟踪与并网效果优化,基于Matlab 2021a的两级式单相光伏并网仿真研究:实现最大功率跟踪与稳定的直

    两级式单相光伏并网仿真研究:MATLAB 2021a版本下的DC-DC变换与桥式逆变技术实现功率跟踪与并网效果优化,基于Matlab 2021a的两级式单相光伏并网仿真研究:实现最大功率跟踪与稳定的直流母线电压,两级式单相光伏并网仿真(注意版本matlab 2021a) 前级采用DC-DC变电路,通过MPPT控制DC-DC电路的pwm波来实现最大功率跟踪,mppt采用扰动观察法,后级采用桥式逆变,用spwm波调制。 采用双闭环控制,实现直流母线电压的稳定和单位功率因数。 并网效果良好,thd满足并网要求,附带仿真说明文件 ,两级式单相光伏并网仿真; MATLAB 2021a; DC-DC变换电路; MPPT控制; 扰动观察法; 桥式逆变; SPWM波调制; 双闭环控制; 直流母线电压稳定; 单位功率因数; 并网效果; THD。,MATLAB 2021a双闭环控制两级式单相光伏并网仿真研究

  • 光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略,助力光伏发电学习 ,光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略学习指南,光伏mppt仿真:通过调

    光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略,助力光伏发电学习。,光伏MPPT仿真研究:光照强度和温度对太阳能电池输出特性的影响及调整策略学习指南,光伏mppt仿真:通过调整太阳光照, 温度等因素 , 光照强度和温度对太阳能电池输出特性的影响。 可用于学习光伏发电 ,光伏MPPT仿真;太阳光照调整;温度影响;光照强度;太阳能电池输出特性。,光伏MPPT仿真:光照与温度对太阳能电池输出特性的影响研究

  • java项目,毕业设计(包含源代码)-springboot学生综合成绩测评系统

    随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要互联网技术来方便人们的日常工作生活,实现工作办公的自动化处理,实现信息化,无纸化办公。 本课题在充分研究了在Springboot框架基础上,采用B/S模式,以Java为开发语言,MyEclipse为开发工具,MySQL为数据管理平台,实现的内容主要包括首页,个人中心,综合管理等功能。

  • 陨石-4天际星(SFS-AEF).zip

    航天模拟器文件、蓝图、代码

  • 西门子Smart PLC四轴搬运取料机案例程序:从新手到项目的跃升之路,西门子Smart PLC四轴搬运取料机运动控制案例程序-PLC通信与伺服电机自动化控制解决方案,西门子200smart运动控制

    西门子Smart PLC四轴搬运取料机案例程序:从新手到项目的跃升之路,西门子Smart PLC四轴搬运取料机运动控制案例程序——PLC通信与伺服电机自动化控制解决方案,西门子200smart运动控制四轴搬运取料机案例程序 该程序为两台smart plc通过通讯控制四轴伺服电机的搬运取料机案例工程案例程序。 包含200smar_PLC程序+项目电气接线图(PDF图纸)+程序流程说明+触摸屏程序(步科) 程序包括伺服电机的启动,停止,原点定位,回归原点,位置控制以及方向控制。 包括了所有控制伺服电机的指令,里面有指令的用法的详细解释和程序说明。 拿来就能用的案例程序,结合程序案例中学习,就会轻松快速的掌握。 让你从新手直接能做项目。 动作流程: 客户上好料盒,M1轴伺服跑到第一片料的位置,气缸将料推出到上位置, M2轴在上料位置取件后移动到直线电机的,加工位置,m2轴上通过有上料下料的气缸, 用真空吸住料后m2轴移动到一个二维平台的加工位置,把带加工的料放到加工位置后, 激光器开始加工,加工完成后,通过M2轴把料取下,移动到成品放料位置,放料后, M3轴将成品料推送到M4

  • 小蜻蜓三号探测器.zip

    航天模拟器文件、蓝图、代码

Global site tag (gtag.js) - Google Analytics