引言
刚开始接触到iOS 开发
时,就是运用Swift
言语进行开发,在大致看了一下Swift
相关文档的目录结构后,感觉跟其他言语大差不差,便随意扫了一遍,可是在接触的时间变长后,渐渐发现,它的许多特别的语法我都给疏忽了,都是遇到时现查一番,本文就是对遇到的特别语法的一个简要总结
关键字
weak
用于声明弱引证
,主要用于处理实例循环强引证
的问题。在类之间相互引证时,假如运用强引证
(默许情况下),或许会导致循环引证,从而造成内存泄漏
本篇文章详细的介绍了weak
的用法,同时还提到了另一个处理实例循环强引证
问题的关键字unowned
lazy
用于声明延时加载存储特点,将特点的初始化推迟到第一次拜访该特点的时分,而不是在对象初始化时当即履行
-
lazy
声明的特点必须声明为变量(var
),因为一旦初始化,它们的值能够在后续拜访中改变 -
lazy
特点在第一次拜访后会保存其值,因此它只会初始化一次
本篇文章详细介绍了延时加载存储特点
的概念
struct 结构体
struct 结构体
与class 类
看起来挺相似的,不管长相仍是写法,可是结构体
仍是与类
有着许多差异的:
- 值类型
- 不支撑承继
- 具有自动生成的成员初始化器
- 特点默许不可变,要声明为
var
才可变
本篇文章对比介绍了struct 结构体
和class 类
的差异
最大的差异:struct
是值类型,而class
是引证类型
private(set)
-
private
用于约束整个成员(包括读取和设置) -
private(set)
用于约束特点的设置操作,但外部能读取
Swift
提供了五个拜访操控等级的修饰符:open
、public
、internal
、file private
和 private
拜访等级修饰符都支撑带上一个参数,该参数由一对圆括号和其中的set
关键字组成
typealias:类型别号
typealias
是Swift
中的一个关键字,用于为现有的数据类型
(包括类
、结构体
、枚举
、协议
、函数类型
等)定义一个别号
。这个别号能够用来更方便地引证复杂的数据类型,进步代码的可读性和可维护性
try 和 try?
-
try:显现处理过错
运用
try
表明希望捕获或许的过错并进行处理。假如产生过错,程序将抛出一个反常,能够运用do-catch
块进行过错处理 -
try?:过错默许返回nil
运用
try?
表明希望尽量避免处理过错,而是将成果作为可选值处理。假如代码履行成功,将返回成果值;假如产生过错,将返回nil
运算符
!:强制解析
!
将可选类型(?)
的值强制解包
,确定值不会为nil
可运用,否则会导致运行崩溃
?:可选类型
可选类型
是Swift
中用于处理或许包括空值(nil)
的值的机制。可选类型
有两种或许的值:
- 有值:表明包括了一个详细的值
- 无值(nil):表明没有值
??:空合并运算符
??
的作用是在可选值
为nil
时提供一个默许值,以防止运用可选值
时出现nil
引发的问题
区间运算符
-
a...b
:闭区间运算符。表明一个从a
到b
(包括a
和b
)的闭区间规模 -
a...<b
:半开区间运算符。表明一个从a
到b
(包括a
,但不包括b
)的半开区间规模
特点调查器
-
willSet
:在新的值被设置之前调用。能够在特点值即将产生变化时履行额定的代码 -
didSet
:在新的值被设置之后调用。能够在特点值产生变化后履行额定的代码
// 在类型 {} 内运用
var property: Int {
willSet {
// 在特点值将要被设置前履行的代码
}
didSet {
// 在特点值被设置后履行的代码
}
}
数据类型
字典
字典
这个数据类型在其他言语中也有,并不特别,此处列出仅是其写法比较特别,有些类似数组:
[KeyType: ValueType]
// 声明
var person = ["name": "Mary", "age": "18"]
// 增加
person["sex"] = "female"
// 拜访
let personName = person["name"]
// 更新
person["name"] = "Alice"
// 删去
person["name"] = nil
枚举
枚举
这个数据结构应该也是不陌生了,此处列出是因为在Swift
中广泛的运用枚举相关值这个概念,在此便侧重声明一下
枚举
是一种在编程中用于定义命名常量调集的数据类型。枚举
是一种有限的、离散的数据类型,它包括一组或许的值
// 带相关值的枚举:能够为枚举成员增加相关值,以便在枚举的不同成员之间传递数据
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
本篇文章详细的介绍了枚举相关的概念
元组
元组
这个数据结构在其他的言语(如:Python)也是存在的,此处列出是为了阐明一下在Swift
中元组
的运用操作
元组
能够包括不同类型的值,并且能够包括任意数量的值
// 写法一
(value1, value2)
// 写法二
(key1: value1, key2: value2)
有key
时经过key
拜访,没有时经过下标索引
拜访
let person1 = ("John", 30)
let name1 = person1.0
let person2 = (name: "John", age: 30)
let name2 = person2.name
语法
\():字符串插值语法
\()
用于将变量、常量、表达式或其他值嵌入到字符串字面量中,以创立一个新的字符串。这允许在字符串中包括变量或表达式的值,使字符串更加动态和可变
guard 句子
guard
句子是Swift
中用于履行条件查看
并提早退出函数、方法或循环的结构之一。它通常与else
子句一同运用,用于在条件不满足时履行特定的操作
guard condition else {
}
闭包
Swift
中的闭包
通常表明为用花括号{}
包裹的一段代码块。这个代码块能够承受参数、返回值,以及在其中履行特定的操作
闭包是一种自包括的功能块,能够在代码中传递和引证,也能够在需求时履行
{ (parameters) -> ReturnType in
// 闭包体,履行特定的操作
}
闭包作为参数传入函数,能使得函数更灵敏、更通用。闭包在作为函数的参数传入时,能够将闭包的闭包体约等于是函数的函数体
尾随闭包:假如函数的最后一个参数是闭包类型,能够将闭包表达式写在函数调用的圆括号外部,作为函数调用的一部分
协议
待更新
小结
言语是根底,你或许会因为各种原因接触到多种言语,可是打牢根底是不管做什么都需求遵循的原则。对于编程,我对打牢言语根底的感悟就是掌握牢固了才干看懂代码~