2021年3月31日
摘要: 函数式编程(Funtional Programming) 基本概念 函数式编程(Funtional Programming,简称FP)是一种编程范式,也就是如何编写程序的方法论 主要思想:把计算过程尽量分解成一系列可复用函数的调用 主要特征:”函数的第一等公民“,函数与其他数据类型一样的地位,可以赋 阅读全文
posted @ 2021-03-31 02:38 FunkyRay 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 标记 我们可以通过一些注释标记来特殊标明注释的含义 类似 中的 类似 中的 用于标记未完成的任务 用于标记待修复的问题 使用示例如下 我们还可以使用 来作为警告的提示,效果更为显著 条件编译 我们还可以在 自定义标记 在 里自定义的标记要以 开头 打印 我们可以自定义打印的内容,便于开发中的详情观察 阅读全文
posted @ 2021-03-31 02:37 FunkyRay 阅读(243) 评论(0) 推荐(0) 编辑
摘要: String Swift的字符串类型 ,和OC的 ,在API设计上还是有较大差异的 String的插入和删除 和它的 ,共享字符串数据 其本质是 内部有一个指针指向 对应的区域 发生修改或者转为 时,会分配新的内存存储字符串数据,不会影响到最初的 的内容,编译器会自动做优化 String与Chara 阅读全文
posted @ 2021-03-31 02:37 FunkyRay 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 字面量(Literal) 基本概念 下面代码中的 就是字面量 常见字面量的默认类型 可以通过 修改字面量的默认类型 Swift自带的绝大部分类型、都支持直接通过字面量进行初始化 字面量协议 Swift自带类型之所以能够通过字面量初始化,是因为它们遵守了对应的协议 Bool: Int: Float、D 阅读全文
posted @ 2021-03-31 02:36 FunkyRay 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 内存管理 基本概念 跟 一样,Swift也是采取基于引用计数的ARC内存管理方案(针对堆空间) Swift的ARC中有三种引用 强引用(strong reference) : 默认情况下,引用都是强引用 弱引用(weak reference) :通过 定义弱引用 必须是可选类型的 ,因为实例销毁后, 阅读全文
posted @ 2021-03-31 02:35 FunkyRay 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 高级运算符 溢出运算符(Overflow Operator) Swift的算数运算符出现溢出时会抛出运行时错误 Swift有溢出运算符 ,用来支持溢出运算 计算方式 类似于一个循环,最大值255再+1,就会回到0;最小值0再 1,就会回到255 而 就等于 ,也就是255 + 1 + 254,255 阅读全文
posted @ 2021-03-31 02:34 FunkyRay 阅读(115) 评论(0) 推荐(0) 编辑
摘要: String 我们先来思考String变量占用多少内存? 我们通过打印可以看到 占用了16个字节,并且打印内存布局,前后各占用了8个字节 下面我们再进行反汇编来观察下 可以看到这两句指令正是分配了前后8个字节给了 那String变量底层存储的是什么呢? 我们通过上面看到 的16个字节的值其实是对应转 阅读全文
posted @ 2021-03-31 02:33 FunkyRay 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 错误处理 错误类型 开发过程中常见的错误有 语法错误(编译报错) 逻辑错误 运行时错误(可能会导致闪退,一般也叫做异常) .... 自定义错误 Swift中可以通过 协议自定义运行时的错误信息 函数内部通过 抛出自定义 ,可能会抛出 的函数必须加上 声明 需要使用 调用可能会抛出 的函数 抛出错误信 阅读全文
posted @ 2021-03-31 02:32 FunkyRay 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 协议(Protocol) 基本概念 协议可以用来定义方法、属性、下标的声明,协议可以被结构体、类、枚举遵守 多个协议之间用逗号隔开 协议中定义方法时不能有默认参数值 默认情况下,协议中定义的内容必须全部都实现 协议中的属性 协议中定义属性必须用 关键字 实现协议时的属性权限要不小于协议中定义的属性权 阅读全文
posted @ 2021-03-31 02:31 FunkyRay 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 初始化器 类的初始化器 类、结构体、枚举都可以定义初始化器 类有两种初始化器 指定初始化器(designated initializer) 便捷初始化器(convenience initializer) 每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器 默认初始化器总是类的指定初始化器 阅读全文
posted @ 2021-03-31 02:30 FunkyRay 阅读(94) 评论(0) 推荐(0) 编辑