2023版升级后的内容
2022版升级后的内容
Swift入门知识
Swift的数据类型
- Swift的(Boolean)布尔类型
- Swift的(Int)整形类型
- Swift的(Float)和(Double)浮点类型
- 字符串(String)及对字符(Characters)的遍历
- Swift字符串的使用详解
- Swift字符串的Raw String
- Swift中的元组(Tuples)
- 基本数据类型之间的互相转换
- 一维数组(Array)的使用详解
- 多维数组的创建和遍历
- 数组的几种遍历方式
- 字符串和字符数组的相互转换
- 通过filter, allSatisfy, first, last, partition等方法过滤数
- 通过min, max等方法过滤数组中的元素
- 通过prefix, drop等方法截取数组
- 通过flatMap, compactMap等方法对数组进行降维操作
- 字典(Dictionary)的使用详解
- 通过filter, map, mapValues等方法对字典进行过滤和映射
- 集合(Set)的创建、修改以及集合之间的交、并、差运算
- Swift的一元、二元和三元运算符
- 位运算、左移、右移和溢处的处理
- 比较运算符和区间运算符的使用
Swift的流程控制
Swift的函数和闭包
Swift的类型与对象
- Swift的枚举(enum)类型及遍历
- 给枚举类型添加方法
- 使用CaseIterable 获取枚举的所有成员
- Swift的结构(struct)类型及其下标(subscript)
- 使用mutating修饰函数以修改属性的值
- 通过callAsFunction函数将实例作为函数来调用
- 使用同名函数使函数的调用更加简单
- 类(class)的初始化方法、属性和方法
- 类的引用(reference)特征
- 类和结构两个类型的比较
- 类属性的set和get方法解析
- 类属性的willSet和didSet方法解析
- 类析构方法(deinit)的使用
- 给类添加下标(subscript)
- 类的静态方法(class func)
- 将一个类的实例作为另一个类的属性
- 类的继承以及方法的重写(override)
- 父类在实例类型转化时的应用
- 使用is语句检查实例的类型
- 使用Any表示任意值类型
扩展和协议
- 使用扩展(extension)扩展类型的属性
- 使用extension对方法进行扩展
- 实战:通过扩展判断数组是否相同
- Swift语言中的泛型编程
- 使用协议(protocol)进行方法的声明
- 使用typealias 关键词类型定义新的名称
- 使用associatedtype给协议添加一个类型占位符
- 面向协议编程:保证类型转换的安全性
- 面向协议编程:通过扩展为协议提供默认的实现
- 面向协议编程实战:基于协议的网络请求1
- 面向协议编程实战:基于协议的网络请求2
- 面向协议编程实战:基于协议的网络请求3
- 使用some关键词使编译器根据返回值推断值的类型
- 使用where 关键词进行条件约束和类型约束
- 问号?和感叹号!的用法解析
- Swift中的下划线_的几处妙用
- Swift的do-try-catch错误处理模式
- 使用MemoryLayout查看各种类型的内存占用情况
- 使用Swift代码对内存指针进行操作
- 实例的引用特征和Swift的内存管理
- 实例的交叉引用和弱引用(weak)
- Swift的懒加载(lazy initialization)使用解析
iOS开发常见概念
- 范围Range、ClosedRange和NSRange的使用
- 点CGPoint和变形CGAffineTransform的使用
- 尺寸CGSize的使用详解
- 范围CGRect的使用详解
- 使用NSString对字符串进行各种操作
- 日期Date和DateFormatter日期的格式化
- 实战:检查两个项目的生命周期是否重叠
- 日历Calendar和日期组件DateComponents
- 日历Calendar和时区TimeZone
- 使用定时组件Timer执行定时任务
- 使用UserDefaults和归档方式存取用户数据
- 路径URL的使用详解
- 使用DispatchGroup管理线程组
- 使用UIScreen查询设备屏幕信息
- 使用UIColor设置界面组件的颜色属性
- Swift中的KVC键值编码和KVO键值观察
- 使用@autoclosure把一句话表达式封装成闭包
- 使用@available声明类型所依赖的平台版本
- 使用@discardableResult屏蔽Result unused警告
- 使用@dynamicCallable像调用函数一样使用实例
- 使用@_dynamicReplacement实现方法或属性的替换
- 使用@dynamicMemberLookup实现动态成员查找
- 使用@escaping创建可逃逸的闭包
- 使用@propertyWrapper对被包装的类型进行自定义
- 使用@resultBuilder通过指定的结构组合多个result
- 通过让对象本身作为返回值实现优雅的链式语法
- 通过单例模式实现异步任务的按序执行
- 响应式编程框架Combine:使用Publisher发布者
- 响应式编程框架Combine:使用PassthroughSubject
- 响应式编程框架Combine:处理PassthroughSubject的发布状态
- 响应式编程框架Combine:使用CurrentValueSubject
- 响应式编程框架实战:下载远程图片
- 响应式编程框架实战:Combine和NotificationCenter的结合
- 响应式编程框架实战:@Published修饰符的使用
- 响应式编程框架实战:贪吃蛇游戏的开发 - 配置
- 响应式编程框架实战:贪吃蛇游戏的开发 - 工具类
- 响应式编程框架实战:贪吃蛇游戏的开发 - 搭建场景
- 响应式编程框架实战:贪吃蛇游戏的开发 - 完成
Swift实用进阶
- Swift语言中的三种消息传递模式
- 闭包在定时任务、动画和线程中的使用
- 通过protocol在两个对象中进行消息传递
- 通过间接代理进行对象间的消息传递
- 通过属性进行对象间的消息传递
- 使用通知的方法进行对象间的数据传递
- 使用performSegue在故事板页面之间进行数据传递
- 使用performSegue在故事板页面之间进行数据传递2
- Swift中的栈Stack和队列Queue详解
- Swift中的链表LinkedList详解
- 使用Swift创建一个二叉树BinaryTreeNode
- Swift语言中的算法:冒泡排序算法
- Swift语言中的算法:选择排序算法
- Swift语言中的算法:插入排序算法
- Swift语言中的算法:希尔排序算法
- Swift语言中的算法:快速排序算法
- Swift语言中的算法:归并排序算法
- Swift语言中的算法:基数排序算法
- Swift语言中的算法:堆排序算法
- Swift语言中的设计模式:单例模式
- Swift语言中的设计模式:工厂模式
- Swift语言中的设计模式:建造者模式
- Swift语言中的设计模式:原型模式
- Swift语言中的设计模式:享元模式
- Swift语言中的设计模式:装饰者模式
Swift完整商业案例
- 第一部分:在Xcode中创建ACT学习辅助软件ACTHelper
- 创建应用程序的Identifier并添加测试设备
- 创建开发证书、发布证书和Provisioning Profile
- 在AppConnect中创建产品ACTHelper
- 在ACTHelper项目中使用CocoaPod管理插件
- 第二部分:整合项目里的所有通用常量和枚举
- 创建BaseViewController作为控制器的基类
- 创建作为主要功能入口的欢迎页面
- 设置应用程序顶部状态栏的前景颜色
- 第三部分:创建登陆页面中的自定义视图及相关组件
- 创建登陆页面的自定义表单Row
- 登陆页面的自定义表单Row的内容校验
- 创建所有登录、注册相关页面的基类
- 制作整个登陆页面的基本框架
- 实现国内、海外用户注册表单的切换
- 使用通知中心解决按钮被键盘遮挡的问题
- 使用AES加密算法对密码进行加密
- 创建UserInfo数据实体类
- 创建用于获取用户信息的网络请求类
- 存储和读取沙箱中的用户状态
- 创建一个工具类以获取应用程序的主窗口
- 完成整个登录页面的业务功能
- 第四部分:开始制作注册流程中的账号输入页面
- 实现向服务器请求验证码的功能
- 完成注册流程中的账号输入页面
- 开始制作注册流程中的验证码输入页面
- 完成注册流程中的验证码输入页面
- 开始制作注册流程中的密码设置页面
- 完成注册流程中的密码设置页面
- 完成注册流程中的最后一个页面
- 第五部分:制作用于过滤试卷的区域
- 完成页面顶部过滤面板等区域的创建
- 创建用于获取试卷列表的实体类和网络请求
- 实现试卷列表中的自定义视图
- 完成试卷列表自定义视图的制作
- 整合试卷列表的自定义视图
- 实现试卷过滤面板的折叠和展开
- 创建一个自定义视图作为试卷过滤按钮
- 制作用来拾取考试类型的页面
- 实用ACT/SAT考试类型的选取
- 制作根据区域对试卷进行选取的页面
- 制作试卷的区域列表视图
- 完成根据区域对试卷进行选取的页面的制作
- 制作自定义视图以显示试卷中的每个科目
- 实现向服务器请求试卷信息的功能
- 创建试卷内容页面中的一些自定义视图
- 完成试卷内容页面的制作
- 创建用于获取试卷答案列表的实体类和网络请求
- 制作一个自定义视图以显示试卷的答案列表
- 制作一个自定义视图以显示试题编号和答案
- 创建用于获取题目备选答案列表的实体类
- 创建用于获取题目备选答案列表的网络请求
- 创建位于页面右下角的快捷功能按钮
- 制作用于展示试题内容的详情页面
- 完成试题内容详情页面的制作
- 完成试题原文页面的制作
- 第六部分:开始制作用户档案页面
- 开始创建用户信息编辑页面
- 完成用户信息编辑页面的基本框架
- 实现用户头像的编辑功能
- 将用户头像上传到七牛服务器并存储在沙箱
- 实现用户昵称的编辑
- 开始制作用户反馈页面
- 完成用户反馈页面的制作
- 设置应用程序的图标和启动画面
- 第七部分:App的打包、上传和提交审核
提交答案