Xcode11之后新创建的工程会多出两个文件SceneDelegate。那么我们如何让它变回之前的那样的工程呢。 一、将这两个文件删除。会报错There is no scen...
Xcode11之后新创建的工程会多出两个文件SceneDelegate。那么我们如何让它变回之前的那样的工程呢。 一、将这两个文件删除。会报错There is no scen...
泛型(Generics) 1、泛型可以将类型参数化,提高代码复用率,减少代码量 栈 汇编分析泛型的实现原理 通过汇编我们可以看到两次调用的swapValues方法的地址是相同...
错误类型 1、开发过程常见的错误 自定义错误 1、Swift中可以通过Error协议自定义运行时的错误信息 2、函数内部通过throw抛出自定义Error,可能会抛出Erro...
Any、AnyObject 1、Swift提供了2种特殊的类型:Any、AnyObject is、as?、as!、as 1、is用来判断是否为某种类型,as用来做强制类型转换...
以addWater方法为例讲解代码可读性的改进方案 前置条件:如果参数是负值,则组中要有足够的水量。 后置条件:将添加的水平均分配给该组中的所有容器。 惩罚:抛出Illega...
协议(Protocol) 1、协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开) 2、协议中定义方法时不能有默认参数值 3、默认...
初始化器 required 用required修饰指定初始化器,表明其所有子类都必须实现该初始化器(通过继承或者重写实现) 如果子类重写了required初始化器,也必须加上...
源代码有两种不同的用户:程序员和计算机。一方面,计算机既能处理干净、结构良好的代码,也能处理混乱的代码。另一方面,程序员对代码的可读性很敏感。甚至是代码中的空白、正确使用缩进...
初始化 初始化器 1、类、结构体、枚举都可以定义初始化器 2、类有2种初始化器:指定初始化器(deaignated initializer)、便捷初始化器(convenien...
多态 首先看一下结构体的实例方法调用 看一下汇编 编译完就能确定最终调用谁,因为函数地址是写死的。 换成class之后我们再来看一下 再看一下汇编 可以发现汇编代码多了很多,...
继承(Inheritance) 1、值类型(枚举、结构体)不支持继承,只有类支持继承 2、没有父类的类,称为:基类 3、子类可以重写父类的下标、方法、属性,重写必须加上ove...
下标(subscript) 1、使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:小标脚本 2、subscript中定义的返回值类型决定...
在iOS-慢速方法查找[https://www.jianshu.com/p/41468851c2f3]和iOS-快速方法查找[https://www.jianshu.com/...
一、正常圆角的实现 在做项目过程中,我们总会遇到实现圆角的情况,当然最简单是四个角都改为圆角,如下代码: 二、一个或部分圆角的实现 但是项目中也会遇到针对某一个View只画半...
记录UICollectionView cell间距调整方法 啥东西不经常用就会忘记,以后要做好笔记. (⊙o⊙) 实例化了一个CollectionView 定义的一些值 常...
闭包是可以在你的代码中被传递和引用的功能性独立代码块。闭包在实现上是一个结构体,它存储了一个函数(通常是其入口地址)和一个关联的环境(相当于一个符号查找表)。Swift 中的...