学习笔记2-App Intents、WeatherKit、DispatchWorkItem、TSan

808 阅读2分钟

iOS App Intents

iOS 16 Apple为我们带来了全新的快捷指令框架 App Intents。在iOS 16之前,快捷指令是和Siri息息相关的。与iOS 16之前Siri Shortcut相比,新框架最大的优势是用户安装App后可立即使用快捷指令,无需在App内操作添加到Siri这个过程。 实现快捷指令:定义Intent,实现AppShortcutsProvider,创建自定义Siri View。 快捷指令中添加参数:定义参数结构体,遵循 AppEntity 协议;把参数添加到 Intent 中,使用到 @Parameter;支持带参数的快捷指令短语。

WeatherKit

在WWDC 2022,Apple推出了全新的天气数据服务 WeatherKit,提供了丰富的天气数据供开发者使用。只要你已经购买了Apple的开发者账号,就可以使用它。和大多数天气服务一样,WeatherKit也是按请求次数收费的,价格如下。50万次调用/月:会员资格已包含。100万次调用/月:49.99美元。200万次调用/月:99.99美元……苹果提供了两种方式调用WeatherKit:系统原生库WeatherKit(仅支持Apple平台),Weather KIT REST API(全平台支持)。WeatherKit系统库从iOS 16开始支持,并且只支持Swift不支持OC。Weather Kit REST API使用标准的JWT进行认证和授权。

DispatchWorkItem

在GCD中,DispatchWorkItem是一个封装了任务的工作单元,它可以被提交到GCD队列中执行。DispatchWorkItem是Swift中的类,在Objective-C中,你可以使用 dispatch_block_t 来创建一个工作项,然后将其提交到GCD队列中执行。如果你需要在Objective-C中使用DispatchWorkItem的更高级特性(如取消支持和完成处理),你可能需要使用一些额外的机制来实现这些功能。

TSan(Thread Sanitizer)

Xcode的Thread Sanitizer是一种快速的线程错误检测器,它可以帮助开发者发现多线程程序中的数据竞争和其他并发安全问题。Thread Sanitizer通过在运行时监控内存访问和线程交互来实现其功能。如果它检测到潜在的并发问题,它会报告问题发生的具体位置,包括出问题的代码行和相关的线程。这有助于开发者定位和修复问题。启用TSan:Edit Scheme -> Diagnostics -> Thread Sanitizer。

参考文档