In my experience, SwiftUI’s “learn once, apply anywhere” often turns into “learn once, learn twice, apply somewhere, debug everywhere.”
文中负责根据 UTI 数据库决定用哪个应用打开文档:例如安装 LogUI 后,扩展名为 logui 的文件被查到对应 co.eclecticlight.loguilog,从而交给该应用。应用在 Info.plist 里声明对某些 UTI 的角色(如编辑者)即告知 LaunchServices 应建立的文档关联。该机制还延伸到打开/存储对话框中的类型与扩展名、以及「用何应用打开」列表;与 GUI 相关的子系统依赖 UTI,而非内容嗅探。