iOS开发 Swift 速记7:结构体和类
初级代码游戏的专栏介绍与文章目录-CSDN博客我的githubcodetoys所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。这些代码大部分以Linux为目标但部分代码是纯C的可以在任何平台上使用。源码指引github源码指引_初级代码游戏的博客-CSDN博客C#是我多年以来的业余爱好新搞的东西能用C#的就用C#了。系列入口iOS开发 Swift 速记1变量和基本数据类型-CSDN博客怀疑看的资料不行含混不清。目录一、结构体和类二、属性三、属性包装器四、类属性和方法(静态属性和方法)五、下标方法六、构造方法七、析构方法八、继承代码一、结构体和类struct 结构体 不能继承 除了类都是值类型class 类 类是引用类型 比较用 类属性必须有初值要么直接指定要么用构造函数init类的实例即使是let一样能修改属性为了摆脱指针引入了多少奇怪东西啊lazy var 延时构造非线程安全 谁想出来的啊二、属性存储属性 变量常量var 属性名:类型 初值 {willSet{语句} didSet{语句}}监听器默认参数名newValue oldValue 可以用新名字来修改初始化不会触发监听器计算属性 var 属性名:类型{get{语句} set{语句}} set参数为newValue 可以没有set(即只读)只读计算属性可以简写 var 属性名:类型{语句}计算属性没有监听器三、属性包装器定义 propertyWarpper struct 包装器名称{属性模板定义}使用 包装器名称 var 属性名:类型四、类属性和方法(静态属性和方法)static 通过 类名.属性和方法名 访问普通类方法里self指自身实例静态方法里指自身类类 static func 不可被子类覆盖 class func 可以被子类覆盖覆盖要加overrideclass的方法可以修改属性struct的方法修改需要 mutating func五、下标方法subscript为下标方法([]不是运算符)类似计算方法六、构造方法init 不需要func没有返回值class 所有存储属性都有默认值时隐含生成无参initstruct 没有定义init时隐含生成以所有属性为参数的initconvenience init 便利构造方法最终必须调用普通构造方法指定构造方法没有修饰的可失败构造方法 init? 根据需要返回nil必要构造方法 required 子类必须实现七、析构方法deinit八、继承class 类名:基类名super指代基类代码struct S { var a:Int var b:Int } class C { var a:Int 0 { willSet{print(newValue \(newValue))} didSet{print(oldValue \(oldValue))} } var b:Int 0 } let x C() print(x.a) x.a 1 print(x.a)这里是文档结束