参考官方文档前置知识:模块和源文件 创建一个iOS项目来对比学习 模块独立的单元构建和发布单位,实现某个特定功能的代码集合创建的一个项目就是一个模块import 导入别人的模...
面向协议编程思想1、开店的例子——面向过程(过程),面向对象(哪些对象)2、面向协议编程考虑的重点是协议,一般思路:1)把某些功能抽象出来,先定好协议2)进行协议扩展3)遵循...
import Foundation需求:希望把playBasketball()设计为可选,可以实现也可以不实现方案:通过扩展协议实现方法可选步骤:把协议扩展,把不想实现的方法...
目录 一、泛型引入——一个打印机案例引发的思考二、泛型写法——提高代码复用性三、类型约束四、关联类型打印机案例 【思考】如果此时我们打印其他类型的值,就需要针对不同的类型写类...
异常处理:一、引入二、异常表示三、异常处理-4种方式四、指定清理操作涉及关键字:Error throw throws try do catch引入 比如你设计的程序需要读取电...
为现有的类、结构体、枚举类型、协议添加了新功能。扩展可以:1、添加计算属性(get set);2、定义方法;3、提供新的构造函数;4、使现有的类型遵循某协议(这种常用) Sw...
引入 协议定义了一个大致的框架,规定里面有哪些属性和方法,至于这个属性的值是多少或者方法怎么实现,我不管,留给别人实现。——像java里接口。 协议的定义 属性定义要求1、不...
一、导入构造函数式从无到有,诞生的过程析构函数相反,从有到无,也就是死亡的时候会调用的函数。 二、定义每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号deinit{...
必要构造函数在类的构造函数前添加required 修饰符来表明表明它是一个必要构造函数.注意:当子类重写父类的必要构造函数时,不需要添加 override 修饰符,必须在子类...
产生原因 1、定义类、结构体或枚举初始化时可以失败2、失败原因,包括给初始化传入无效的形式参数值,或缺少某种外部所需的资源,又或是其他阻止初始化的情况3、为了处理这种可能,在...
猜一猜,可不可以继承父类的构造方法?子类在默认情况下不继承父类的构造器。子类继承父类的构造函数是有条件的,遵守以下2个规则:
可选型定义 解包 取出可选型的值
引入 属性继承:子类可以继承父类的属性,包括存储属性、计算属性和类型属性,还可以继承父类的属性观察器。属性重写需要遵循一定原则,不然就会报错属性重写原则 属性观察器重写
官网讲解的很清楚指定构造函数和遍历构造函数(对号官网)1、概念1)指定:标配,至少一个,初始化所有属性 思考:怎么判断是不是指定函数?就看是不是初始化了所有存储属性。 2)便...
引入:不给存储属性赋值,报错定义类属性不报错,结构体的实例时必须为所有的存储属性设置一个合适的初始值不报错,3种方式:1 可选型2 直接定义的时候初始化,直接=3 构造函数中...
存储属性1.存储常量或者变量的2.要么给它默认值,要么在构造方法里初始化 计算属性 计算属性不直接存储值2.访问时候调用get,赋值调用set,类似java里的封装3.get...
类的定义 类由属性和方法构成 实例化对象 类是引用类型 如何判断是否引用了同一个实例 ===!==
根据官方文档,闭包通常下三种形式之一:全局函数是一个有名字但不会捕获任何值的闭包嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包闭包表达式是一个利用轻量级语法所写的可以捕...
回想一下java中方法的定义和调用 在Swift中函数的定义 常见的几种函数类型//无参无返回值 //有参无返回值 //无参有返回值 使用注意1)函数的参数默认都是let类型...