
获得徽章 0
- #知识小集#「 Sign In with Apple - 使用苹果账号登录你的应用 」 by @KANGZUBIN
对于绝大部分应用,通常都会有自己的账号体系,但为了避免用户经常忘记账号密码,那些中小型 App 一般都会接入来自大厂的第三方登录 SDK。而在 WWDC 2019 上,苹果也想在第三方登录服务这块“蛋糕”上分一杯羹,给我们带来了 “Sign In with Apple”(使用苹果账号登录)。这似乎也是水到渠成的事,因为几乎所有的 iOS/macOS 设备都会登录 Apple ID,而且近两年来,苹果强制对所有的 Apple ID 推行 Two-Factor Authentication(2FA,双重因子验证),大大提高了苹果账号的安全性,减少了盗号风险。
我们可以畅想在不久的将来,在苹果设备上,只要登录了 Apple ID,就可以直接登录所有的 App,是不是很方便?
详情请查看:xiaozhuanlan.com
展开赞过评论2 - 「 SwiftUI 的 DSL 语法分析 」 by @黄兢成
SwiftUI 最厉害的地方是其与 Xcode 深度集成,可以实时刷新预览,这将会改变 UI 的开发方式。SwiftUI 的声明式语法,本身就是 Swift 的语法,属于语言内部 DSL。用了一些不太常见的语法特性,乍一看让人觉得很神奇。
本文讨论 SwiftUI 所用到的不太常见语法特性。主要内容如下:
1. some View
2. 省略 return
3. 链式调用
4. 属性(Attribute)
5. @State,Property Delegates
6. 尾随闭包(Trailing closure)
7. Function Builders
8. 附录 1,DSL
9. 附录 2,@dynamicMemberLookup 的实现流程
详情请阅读:t.cn
展开赞过评论1 - #知识小集# 「 Go 语言 Channel 实现原理精要 」 by @draveness
作为 Go 语言中核心的数据结构和 Goroutine 之间的通信方式,Channel 是支撑 Go 语言高性能并发编程模型的结构之一。Go 并发一个重要理念是 `不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存`。
作者在这篇文章中从源码入手,详细分析了 Channel 相关的数据结构以及使用 Channel 的四个基本操作:创建、发送、接收和关闭,特别是针对发送和接收阶段的不同情况做了详细的拆解和分析,图文并茂。
对 Go 语言底层感兴趣的童鞋可以好好品读一下。
详情可查看:draveness.me
展开赞过评论2 - 「 追踪 Objective-C 方法中的 Block 参数对象 」 by @杨萧玉HIT
很多方法最后一个参数是类似于 completionBlock 这种回调,然而有些 API 实现一些异常逻辑时会忘记调用传入的 Block 参数(当然这肯定是 bug 啦),或者存在多次调用。在调试的时候可能会碰到这种大坑,需要追踪下 Block 参数何时调用了,甚至是否调用过。如果不方便直接在 Block 实现中加代码,或者没有源码的情况下,就需要无侵入式地追踪 Block 参数对象。
BlockTracker可以追踪方法调用时传入的 Block 类型的参数的执行和销毁。基于 BlockHook实现。本文讲述了它的使用方法和实现原理。
详情可查看:mp.weixin.qq.com
展开评论点赞 - #知识小集# 「 机器学习新工具: Create ML App 」 by @故胤道长
Create ML 是苹果于 2018 年 WWDC 推出的生成机器学习模型的工具。它可以接收用户给定的数据,生成 iOS 开发中需要的机器学习模型。今年的 Create ML 在易用性上更进一步:无需编程即可完成操作、独立成单独的 Mac OS App、支持更多的数据类型和使用场景。
在操作流程上,苹果提供了单独的 Mac OS App,完全通过可视化界面来完成 选择模型类型并导入数据 -> 训练模型 -> 评估模型 -> 观察模型 的整个流程。
在应用场景上,今年增加到了图片、文本、表格、声音、活动5种。
Create ML 的最大优点在于,它是以用户需求为驱动、完全服务于 App 开发,相信在 iOS 13 后越来越多的开发者将会采用 Create ML 和 Core ML 开发应用。xiaozhuanlan.com
展开赞过评论1 - #知识小集# 「 UIViewController 预加载方案浅谈 」 by @hite和落雁
预加载作为常规性能优化方法,在所有有性能需求的场景都有使用。在 iOS 常规的优化方案中,预加载也是极常见的方法,多见于:预加载图片、配置文件、离线包等业务资源。但是对于整个 App 的核心组件 UIViewController 却少见预加载的策略。
在本文中,作者在思考和调研了 UIViewController 渲染流程和特性后,提出了自己的解决方案 ViewControllerPreRender,对比了使用该方案前后的性能,并说明了背后的原理以及适宜的场景。
有类似需求的童鞋可以参考一下。展开赞过评论1 - #iOS知识小集#「 WWDC2019 专场特性 Vision FrameWork 」
Vision FrameWork 于 WWDC2017 推出,用来处理计算机视觉方面的任务,比如人脸检测、文本识别、条形码识别、图片处理,也可以自定义模型来处理一下任务,比如图片分类。
WWDC2019又丰富了Vision FrameWork 的特性,比如:检测图片的相似性,检测图中出现的对象(是否有人物、动物、植物等),对图片进行分类等等。
更多内容可以观看 session:t.cn
今年,苹果在机器学习上又迈上了一个新的台阶,无论在学习成本与功能上都有了更大的提升。相信不久会有更多ML 方面的 App 逐渐与大家见面。期待机器学习在多媒体方面能更好地服务人类。展开赞过评论1 - #iOS知识小集#「 WWDC2019 专场特性 Combine 」
Combine 是这次大会新出的响应式框架,对标 Rx 类型的框架,比如 RxSwift、RxJava。
Combine 框架提供了一个声明性的Swift API,用于响应某些值的变化。这些值可以是用户操作UI的事件、网络响应、计划事件(比如Timer)和其它类型的异步数据,它以订阅发布的模式来处理事件。
有了这个框架,可以做更多的事情,比如 MVVM、回调地狱问题,可惜我只看到了 Swift 相关的 API,并未发现有 OC 的版本(Bridge除外)。从这次大会来看,很多东西都 Swift Only,比如 SwiftUI。
随着 Swift 支持越来越多的特性,App支持的最低版本越来越逼近iOS13。WWDC2019 只是一个开始,相信会有更多 Swift Only 的特性。该学习 Swift 了。
更多内容参考:t.cn
展开赞过评论1 - WWDC19 06-04 Tuesday(美国时间) Session List赞过评论1
- #iOS知识小集#「 让异步单元测试更快更稳定 」
如何让让异步单元测试更快更稳定?John Sundell 给了我们三点建议:
1. 避免使用 sleep(),而是使用 expectations
2. 使用较大的 timeout 值从而避免 CI 上可能出现的超时问题
3. 将所有 assertion 放在测试结尾,而不是闭包里面展开评论点赞