本系列专题深入介绍了macOS平台应用开发中AppKit系统控件,涵盖Appkit、Cocoa、Foundation等框架,专注于OSX系统下的应用程序开发。内容广泛,包括UI设计、网络编程、数据存储、服务协议、I18N国际化、iCloud集成以及应用证书与App Store发布等。每篇文章均附有完整的Swift语言源码下载,UI设计则统一采过Storyboard实现。
本节做为开篇先简单介绍下OS X开发所需要用到的IDE以及周边开发工具等基础知识。
开发框架
在开始前还是在再介绍一下下面这个框架图,因为比较重要,在这里再冗余介绍一下。开发Apple公司相关产品的软件时,主要有两个框架可供使用:Cocoa和Cocoa Touch。Cocoa是一个开发Mac OS系统应用的开发工具包,而Cocoa Touch工具包主要用于IOS系统应用的开发,可以简单理解为Objective-C是一种编程语言,而Cocoa是开发框架,发展至今天,Apple Develop开发体系大体如下图所示:

- Foundation:Objective-C语言的核心扩展包,它并没有内置于Objective-C语言中,也不包含任何UI元素,所以可以在不同的平台通用,大概提供了100多个扩展类;
- Cocoa:MacOS系统应用开发框架,它提供了丰富用户体验的UI框架,由Foundation库、用于数据管理的CoreData框架以及AppKit图形化框架组成;
- Cocoa Touch:IOS系统应用开发框架,它提供了丰富用户体验的UI框架,它包括Foundation库、用于数据管理的CoreData框架以及UIKit库,UIKit可以看成是简版的Appkit,同时附加了比如wifi、gps等API;
- Swift:一种后期开发的Apple系统应用软件的开发语言,可以简单理解为Swift是为了弥补ObjC的缺陷而开发的一种新语言,Objective-C与Swift可以相互调用,Swift可以完全兼容Objective-C,但反过来效果不是太好;
模块间关系

课程大纲
- 基础部分:介绍下OS X应用开发的相关知识,包括Xcode使用、xib、storyboard、swiftui等相关相应;
- UI控件/容器:包括Window、Panel、View、Modal窗口、AutoLayout等UI布局相关的控件使用;
- 基础控件:包括button、textfield、combo、checkbox、image等与表单相关的控件的使用;
- 高级控件:包括Scroll、tableView、outlineView、page等相关的控件内容
- 事件:包括鼠标、键盘、语音、手势等与交互相关的API;
- 网络编程:包括RPC-XPC、http相关内容;
- 数据存储:包括database、core data framework等相关数据持久化相关的内容,还包括KVC、KVO等与数据绑定相关的内容;
- 服务协议:主要包括blueteeth、bonjour、wifi、system service、message等相关服务;实现如数据传输、远程控制等功能;
- I18N资源国际化:资源国际化相关内容;
- iCloud:Apple iCloud云相关,如何与iCloud进行数据同步以及在多个MAC设备间实现数据共享;
- 应用发布:应用App Store发布相关内容,包括develop、sandbox、install、package、delay等;
笔者使用的是:Mac Monterey V12.7.6、Xcode V13.4.1、Swift 5
OS X 工程创建
1. 选择应用类型

- app:图形类应用;
- Document App:文档类应用;
- Game:游戏应用;
- Command Line Tool:无界面应用(可做为学习语法用);
- Safari Extension App:Safari 浏览器扩展;
2. 配置开发语言

- Team:开发者类型(个人,团队等);
- Organization Identifiler:app标识,一般添加公司标识即可;
- Interface:指定UI界面类型,可选的有XIB、Storyboard(推荐)、SwiftUI(推荐);
- Language:开发语言,可选 Objective-C 或 Swift(推荐);
3. 配置项目工程

工程导航
- AppDelegate.swift:应用启动入口,相当于main.swift;
- ViewController.swift:UI设计代码,用于控制UI元素样式等;
- Assets.xcassets:图标管理,用于存放界面Icon,不能存放普通图片;
- Main.storyboard:UI可视化设计界面;
PROJECT
主要是开发相关的配置,参数比较多;
TARGETS
主要是和应用编译打包相关的配置,同一PROJECT可配置多个TARGET
TARGET 详细配置
TARGETS的详细配置
General
设置项目的基本信息,主要有两项需要注意:
- Application Category:提交到AppStore的项目必须要设置一个分类;
- Deployment Target:设置一个最低的os x版本;
Capabilities
App测试和发布需要关注的开关,需要哪个就开放哪个,需要关注以下几项:
- App Sandbox:提交到AppStore的项目必须使用沙盒;
- 需要APP要访问远程api,必须打开 Outgoing Connections;
- Hardware里面要打开print;
- File Access:如果要访问本地文件,此项要进行进应的设置
Info
工程基本信息.plist文件,用来描述配置信息。经如设置图标等APP信息,在 Document Types 中可以设置系统文件的打开类型绑定或是鼠标右键功能等。也可以在工程中加入info.plist文件来补充此设置中的内容(.plist优先级低于此处的设置)。
Build Settings
编译语言版本等设置,APP绑定三方软件的设置,比如引用了三方框架,则需要设置Other Code Signing Flags为–deep,否则无法正常打包。
Build Phases
Build Phases用于设置编辑目标和引入的三方库管理(Link binary With Libraries)。
Group和Target:复杂的项目可以有多个组和目标,每个Target可以拥有不同的配置。Group主要是用于管理项目的源文件,Group不是java中包的概念,它是XCode的一个逻辑分组不会真正的移动文件位置,但可以设置Group指向某个具体的文件夹。
Xcode 基础使用
Xcode功能非常强大,如果要讲完整估计一本书都讲不完。但一般开发时不需要了解太多,现卖现学就可以。另外需要注意的是Xcode版本和Mac OS系统版本相关,是否要升级系统使用最新版本的Xcode需要根据个人喜好而定。
1. Xcode简介

(1) 工程结构导航区

从左到右依次是:
- 文件导航;
- 版本控制;
- 文件结构;
- 文件查找;
- 编译错误日志;
- 测试历史;
- 性能监控;
- 断点列表;
- 编译历史;
(3) 工具栏
- 3.1 :运行按钮,性能等;
- 3.2:运行target切换,切换不同的模拟终端;
- 3.2:打开UI库,UI设计库,如果使用SwiftUI 或 纯编码实现则不需要;
(4) AutoLayou工具栏

从左到右依次是:
- 更新布局;
- 控件对齐;
- 边距约束;
- 约束修复;
- 布局控件;
(6)XIB 面板属性设置
主要用来设计UI用的。

从左到右依次是:
- File Inspector:文件基本设置
- History Inspector:历史记录
- Help Inspector:帮助文档
- Identity Inspector:控件唯一标识
- Attributes Inspector:控件属性
- Size Inspector:控件尺寸
- Connections Inspector:控件连接和事件
- Bindings Inspector:控件数据绑定
- Effects Inspector:视图效果
2. 附助开发工具
可从Xcode菜单中下载:

- Instruments:用于动态调追踪和分析OS X和iOS的代码的性能分析和测试工具
- Simulator:模拟器,用于模拟 iOS 平台设备,在模拟器上运行对应的程序, 方便没有实体设备的时候去调试程序
- Accessibility Inspector:辅助功能检查器,用它来检测APP控件元素的层级结构,使用它可以快速地获取各个控件元素的层级
- FileMerge:可视化文件合并,用于合并.m和.h为一个文件;;
- Create ML:生成机器学习模型的工具。它可以接收用户给定的数据,生成 iOS 开发中需要的机器学习模型(Core ML 模型)
- Reality Composer:AR 和 3D 内容创作工具,支持 Mac(与 Xcode 集成) 和 iOS 平台
3. 其它常用工具
其实来讲Xcode已够做的够好了,但还有一些开发软件可能会经常用到了,笔者常用的有这些:

- DevClearner:项目垃圾清理工具;
- Developer:开发者客户端,一些资讯信息,开发者帐户管理等(现需要升级系统到13才可能使用);
- XCformat:代码格式化工具,其实用处不大,掌握
control+i这一个缩进快捷键基本就够了,也建议使用Bakery工具; - SF符号:Icon设计工具,此工具非常方便,里面的图标也可用于PPT制作;
- TestFight:测试工具;
- Transporter:App Store上传工具,用于发布个人软件;
参考网站
- apple:https://www.apple.com.cn/ 官网
- develop:https://developer.apple.com/cn/ 开发者官网
- swift:https://www.swift.org/documentation/ swift官网
- stack,https://www.stackoverflow.com/ 用于问询细节问题
其实上述网站基本就够了,现阶段如果遇到问题可以选问问AI,可能会比较省时,但不要太依赖了。
1864

被折叠的 条评论
为什么被折叠?



