便利构造函数:1>convenience开头,没有返回值 2>在构造函数中必须明确调用一个设计的构造函数(self)
参数后面的= 是设置默认值,调用的时候可以只调用自己需要的参数
重写或自定义构造函数必须同步重写
required init?(coder aDecoder: NSCoder 函数
delegate 用weak修饰
闭包里面使用self避免循环引用用[weak self] in 或者 [ unowned self ] in
如果需要collectionView
根据父控件的大小而变化,
collectionView.autoresizingMask = [.flexibleWidth , .flexibleHeight]
协议的遵守
swift中协议是可以被类,结构体,和枚举所遵守的,所以在定义的时候可以定义为只被类准守: :class
这时修饰delegate的属性是weak 为了避免循环引用,
协议的方法默认是必须实现的,如果是可选实现的要加 optional参数,并且在协议前面要加@objc,在optional前也要加@objc
逃逸闭包
@escaping 在swift开发中,闭包如果不是在当前方法中直接使用,而是在其他的闭包或者方法中使用,就必须加@escaping关键字,表示逃逸闭包
闭包内部解决循环引用的问题:[weak self] [unowned self]
尾随闭包
如果方法的最后一个参数是闭包,可以该写为尾随闭包,就是将大括号中的闭包内容从小括号中抽离,放到方法后面
如果闭包是唯一的参数,可以将()省略