使用Xcode创建
1、打开Xcode,选择“Create New Project…”。

2、在平台中,选择macOS – App。

3、填写项目名:

Interface选择SwiftUI,Language选择Swift,关于Interface的选项介绍可以查看文章底部的扩展知识“Interface界面开发”。
最后选择保存位置,创建Xcode项目。
和iOS项目的主要区别
1、应用生命周期:iOS使用@main + App,macOS与iOS类似,但是有些生命周期事件不同。
2、UI框架:iOS采用UIKit或SwiftUI,macOS采用AppKit或SwiftUI(推荐)。
3、文件操作权限:iOS应用在沙盒中运行代码,macOS可以选择沙盒或完整磁盘访问权限。
4、菜单栏:iOS没有菜单栏,macOS默认有完整菜单系统。
5、多窗口:iOS较复杂,macOS原生支持多窗口管理。
6、部署平台:iOS部署在iPhone和iPad,macOS部署Mac(Inter/ARM/M系列)。
7、App Store分发:iOS通过App Store分发,Mac App通过App Store或独立分发。
总结
在选择SwiftUI + Swift后,可以看到完整的应用开发界面。

并且,可以在本地运行我们的Mac应用。

扩展知识
macOS软件模块或功能扩展
Xcode 创建新项目时提供了各种模板,它们都代表了不同类型的 macOS 软件模块或功能扩展。

Application 类(常见 App 类型)
1、App:标准 macOS 应用程序(最常用),带 GUI,适合普通的主窗口Mac应用。
2、Document App:支持文件-打开-保存工作流的应用,如 Pages、TextEdit,macOS 会自动为其管理“打开最近文件”等功能。
3、Game:适合做游戏,会集成 GameController 支持、Metal 渲染等,模板更偏向图形和输入处理。
4、Command Line Tool:没有图形界面的命令行工具(.terminal 下运行),适合写脚本工具、自动化、或后台压缩程序。
5、Safari Extension App:用来写 Safari 浏览器扩展的主容器 App,会包含扩展与宿主 App,用于设置和交互。
普通的Mac的项目选择「App」即可,因为它是图形界面、通用的 GUI 应用。
Framework & Library(代码模块复用)
1、Framework:一种可复用的模块(.framework),可以供多个应用共享代码、UI、模型等。可以写一个“图像压缩框架”供多个项目调用。
2、Library:类似 framework,但更底层,通常指 .a 静态库或 .dylib 动态库。现在使用较少,推荐使用 Framework。
3、Metal Library:编写 Metal shader 程序(.metal 文件),用于图形渲染。
4、XPC Service:用于安全的进程间通信(Inter Process Communication),把某些任务放在单独进程中执行,比如后台压缩任务,防止主程序崩溃。
5、Bundle:一个通用插件包,类似“轻量模块”,可以加载资源或动态代码(比如插件、界面扩展)。
如果未来希望把代码逻辑单独封装成模块,可选 Framework。
Other(系统插件、驱动、工具)
1、Generic Kernel Extension:macOS 的内核扩展,控制底层硬件、网络、驱动,macOS 近年对其限制极多。
2、Installer Plug-in:macOS 安装器中的扩展模块,用来定制安装过程,通常配合 .pkg 安装包使用。
3、Instruments Package:用于开发 Apple Instruments 的插件(性能分析工具)。
4、IOKit Driver:低级设备驱动,控制外部硬件(比如 USB、蓝牙、音频设备)。
5、Preference Pane:macOS 系统偏好设置中的插件(.prefPane),可以添加自定义设置模块。
6、Screen Saver:用来开发 macOS 屏保(.saver),安装后可以在系统中选择和显示。
除非专门做系统扩展/驱动,一般开发者不会涉及这些。
软件模块或功能扩展总结
如果开发的是一个图形界面、可视操作的Mac软件,推荐选择:
【App】模板 + SwiftUI + macOS平台
如果以后想把代码逻辑封装为可复用模块,可以:
再创建一个 Framework,用于跨项目共享压缩逻辑。
Interface界面开发

在 Xcode 中创建 macOS 或 iOS 项目时,可以看到“Interface”选项,常见的有:
1、SwiftUI。
2、Storyboard。
3、XIB(即 .xib 文件)。
这其实是在选择界面开发的方式。
SwiftUI(推荐)
简介:Apple 推出的现代 UI 声明式框架,2019 年开始支持,用代码描述界面。
优点:
1、写法现代、简洁,可读性高。
2、支持实时预览(Canvas)。
3、易于复用组件,组合式开发。
4、与 Swift 原生绑定很好(@State, @Binding 等)。
5、代码和界面合二为一(无 .xib / .storyboard 文件)。
缺点:
1、某些底层控制仍需要 UIKit/AppKit 辅助(尤其 macOS)。
2、早期版本(如 iOS 13/macOS 10.15)兼容性稍差。
推荐使用场景:
现代 App、新项目、轻量工具类 App。
Storyboard(UIKit / AppKit)
简介:使用 Xcode 图形化方式搭建多个视图控制器,并通过 segue 连接它们。
优点:
1、图形化拖拽,适合初学者快速上手。
2、直观查看整个界面流程和跳转。
缺点:
1、多人协作时容易产生合并冲突(都是一个 storyboard 文件)。
2、复杂项目难以模块化(可维护性较差)。
3、不适合组件化开发。
4、修改界面要等编译,实时性差。
推荐使用场景:
传统 UIKit/AppKit 项目,或需要可视化场景流程(如复杂注册/引导流程)
XIB(也叫 .xib / NIB 文件)
简介:更细粒度的 UI 布局文件,一个视图一个 XIB。比 storyboard 更模块化。
优点:
1、每个视图独立文件,易于维护。
2、避免 storyboard 合并冲突。
3、可配合 UIView / NSView 自定义类使用。
4、比 storyboard 灵活。
缺点:
1、依然是拖拽 + 手动绑定,工作量大。
2、没有 SwiftUI 那种实时预览或状态绑定。
推荐使用场景:
老项目,或只想给某个控件/模块自定义界面。
开发建议
选择 Interface: SwiftUI 是当前最推荐的方式:
1、更快开发。
2、更简洁逻辑。
3、更适合未来发布开源版本。