美文网首页
Swift语法学习总结

Swift语法学习总结

作者: Johnny_Chang | 来源:发表于2017-02-24 17:00 被阅读27次

    看了一下swift的中文翻译,然后自己模仿敲了一个项目里的个人页面,看了一周多点的视频,老实说应该3天就学完了,自己还是学的太慢了。可能看了,敲过,但还是会很快忘记,趁着艾宾浩斯遗忘曲线还不是快忘记,赶紧总结一波然后再去敲代码比较好。

    1.基本的常量let,变量var,类型class,方法func,结构体struct,枚举enum,元组()就不说了

    2.I/O参数:针对交换函数所以出现,因为swift没有指针类型,所以出现了IO参数,把形参声明为可以被修改的变量类型

    3.函数作为参数传递,衍射高阶函数,高阶函数有什么优势,有文章介绍

    4.闭包:类似OC的Block(匿名函数)

    5.array的sorted by方法作用整理数组

    根据这个例子,体现闭包的强大之处

    优化步骤:1.省略类型2.如果闭包语句只有一句,省略return关键字3.参数名缩写,使用$0,$1代表第一个第二个。。4.运算符类型,省略参数,直接一个大于号>,最后简化为一个

    6.尾随闭包

    7.闭包捕获

    8.结构体是值类型,类是引用类型

    9.恒等运算符

    (is 和 as)

    10.存储属性、延迟存储属性(lazy  类似与懒加载)、计算属性、类型属性

    通过一个例子可以看清楚区别

    懒加载例子:

    计算属性:重写get,set方法

    newValue、oldValue

    只有get方法,是只读属性,两者都有就是可读可写

    类型属性:

    属性观察器:willset,didset

    通过newValue和oldValue看的比较清楚

    11.类型方法,类和结构体的不同是写成class func还是static func

    12.下标方法,subscript

    subsript(number:Int)-> String{

    get{ return firendsArr[number] }

    set(value){firendsArr[number]=value }//set{firendsArr[number]=newValue

    }

    13.继承和多态:

    继承 继承注意点 多态说明

    swift的多态:我理解为重写了父类的方法,和oc不同的是oc的多态有个概念为runtime

    14.Swift构造函数

    构造函数的概念 几种构造器 构造器分类

    比如,不同oc,需要显示写构造方法,Swift往往init都是省略不写

    构造器的几点说明

    比较特别的构造器:便捷构造器

    便捷构造器使用说明 子类初始化优先顺序

    构造器的两段式构造过程:

    构造过程

    成员构造器:结构体特有

    成员构造器

    可失败构造器:允许构造失败,返回为nil

    init?   

    15.析构函数:swift是ARC管理,没有MRC,同OC一样,实例释放之前,会先调用析构函数,OC中是deallo,swift中是deinit

    注意,要被赋为nil,就要求是可选类型

    16.内存管理:强引用,弱引用,循环引用,无主引用

    弱引用:使用weak关键字,解决循环引用

    无主引用的适用情况

    无主引用在不是可选类型时使用,解决循环引用问题

    捕获列表:闭包内对self属性的引用导致循环引用问题,和oc的weakself写法不同,swift中使用[unowned(或weak) self]  in .... 多个实体的引用用逗号隔开

    捕获列表使用规范

    17.可选链

    可选链作用 使用场景就是a.b.c.d.func

    18.is 和 as

    is、as使用场景

    注意:as的可选转换格式和强制转换格式的使用

    19.AnyObject和Any

    比如: var people =[AnyObject]()

    20.swift的嵌套

    结构体里不能随便修改属性的值,要改需方法前使用mutating

    21.swift的扩展:与OC的不同

    多使用扩展后面加协议

    扩展属性的例子:

    注意只能添加计算属性

    个人理解是因为,扩展产生时间和类产生时间不一样,类构建的时候又要求存储属性初始化完成,所以就是矛盾的

    扩展构造器:

    22.协议

    协议的分类,包括optional等

    协议里的实行声明:不声明默认只有set属性

    类类型遵循协议要使用static

    协议里定义突变方法

    协议里定义构造方法,和类型里的声明是一样的,值得注意的是

    而且子类还不用写override

    协议作为一个类型,协议首字母大写,对象首字母小写

    扩展中添加协议成员,使类遵守相关协议和通过扩展补充协议声明

    协议组,使用多个协议

    检验协议的一致性

    is、as和as?的区别,is,as?都有判断作用,as是强制转换类型

    可选协议:

    同理,对协议的实现

    23.泛型

    泛型的使用方法:

    类型<泛型类型>(){.....} 泛型使用场景

    泛型和协议在一起:使用typealias定义一个数据原型

    where关键字,相当于一个条件的限定

    where使用场景

    相关文章

      网友评论

          本文标题:Swift语法学习总结

          本文链接:https://www.haomeiwen.com/subject/kyjwwttx.html