iOS开发 Swift 速记7:结构体和类

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于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 可以被子类覆盖

覆盖要加override

class的方法可以修改属性,struct的方法修改需要 mutating func

五、下标方法

subscript为下标方法(\[\]不是运算符),类似计算方法

六、构造方法

init 不需要func,没有返回值

class 所有存储属性都有默认值时隐含生成无参init

struct 没有定义init时隐含生成以所有属性为参数的init

convenience init 便利构造方法,最终必须调用普通构造方法(指定构造方法,没有修饰的)

可失败构造方法 init? 根据需要返回nil

必要构造方法 required 子类必须实现

七、析构方法

deinit

八、继承

class 类名:基类名

super指代基类

代码

Swift 复制代码
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)

(这里是文档结束)

相关推荐
晗夜未央34 分钟前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>37 分钟前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
努力努力再努力wz1 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua
飞浪纪元[FWC–FE]2 小时前
从零到一键绿:Qt 5.14.2 + VS2019 开发环境搭建、Kit 套件配置与构建错误修复完全手册
开发语言·qt
Wang's Blog2 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
架构师伯子明2 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
海域云SeaArea_2 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
叼烟扛炮2 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
xixingzhe22 小时前
图表中同比与环比的区别:看趋势还是看变化?
开发语言·python