1、Swift语⾔特点
swift的特点:
1、swift是⼀种强类型语⾔,所有变量在声明或者定义的时候会确定类型,并且这个类型不能再被修改。
2、swift是安全的,强类型是安全性的体现之⼀。
3、swift所有的变量(可选型除外)都必须经过初始化才能访问使⽤,
(1)、⾮可选型变量,必须初始化,在结构体和类中,未初始化的⾮可选型属性,必须在构造函数中先进⾏初始化
(2)、可选型
显式声明?:
如String?,⽆需初始化,默认值为nil,使⽤时需要解包返回确切类型数据使⽤
隐式声明!:
如String!,也⽆需要初始化,默认值nil,可以解包,也可以不解包直接使⽤,也就是说,⽐var t:String! = "TEST",如果有⼀个变量a是String类型,⼀个变量b是String?类型,那么若a = t,那么可选型t就⽆需解包,直接返回⼀个确切的String类型,⽽b = t,则是返回⼀个可选型,这种可选型根据实际需要⾃动处理
Optional⽅式声明:
需要初始化,这种⽅式不会⾃动初始化⼀个nil值,并且这种⽅式的也是显⽰声明
4、swift数据类型分值类型和引⽤类型:
值类型:⼀般内存分配在栈中,进⾏赋值都是深拷贝,会开辟全新的内存空间给新变量,对新变量修改不会影响原变量,结构体(struct)、枚举(enum)等都是值类型,像Int、Double、Float、元组、String、Array、Dictionary、Set等,实质都是struct,所以也是值类型
学swift语言能干什么引⽤类型:就是指针,⼀般内存分配在堆中,进⾏赋值会只拷贝值的内存地址,不会开辟新的内存空间给新变量存储值,对新变量修改会影响原变量,像类、闭包、函数等,都是引⽤类型
5、_在swift中有特殊的意义,⼀般使⽤来,⽤于占位进⾏忽略,⽐如函数参数名忽略,⽐如10_000(跟10000⼀样,但是加_后更易读)
6、swift语⾔,在类的继承上,⽅法是可重写的,⽽在类中,⽅法也是可重载的
7、swift中,可选型的本质是枚举
8、swift是⾯向协议的语⾔:
(1)、swift语⾔是⾯向对象的,但是swift标准库中,基础类只有⼏个,⽽协议类型却有⼏⼗个,充分说明了swift语⾔中协议的重要性
(2)、与OC中的协议不同的是,swift的协议是可多继承和扩展的,并且协议⾥不仅可以有⽅法,还可以有属性,这是OC的协议不具备的,在swift中,协议的存在,能更好的去抽象出两个不同事物的共同特性,做到⼀些类⽆法做到的是,⽐如飞机和鸟,明显不同类型,也没有继承关系的两种类型,他们都有翅膀、都会飞⾏的共同性,最好的选择就是协议了