- 初始化器用 required 修饰,子类必须重写该初始化器(如果不写默认重写)。
- 如果子类重写required初始化器,也必须加上required,不用加override
- 父类的属性在自己的初始化里面赋值不会走属性观察器。
- 协议中还可以定义初始化器init,非final类实现时必须加上required
- override重写父类方法,final表示其子类不能重写该方法
- is 用来判断是否为某种类型,as用来做强制类型转换(as只能用于一定可以转换的类型,否则需要?||!)
- 可选类型调用方法要在后面加?否则报错
- 访问权限:internal(target中可以访问) & open(所有的target都可以访问) & private(私有的,当前类中才可访问) & fileprivate(当前文件即.swift文件中可以访问)
- 字符串拼接过程格式化:03:04
let min = 3
let second = 4
let time = String(format: "%02d:%02d", min, second)
print(time)
- 打开project找到swift packages下的packages,点击+ 输入对应的URL地址进行添加。
- 在swift中,像oc中的无参有返回的方法可以直接写成一个计算属性
- 类属性用static修饰
- 让控件不随着父控件 的拉伸而拉伸:
// 让控件不随着父控件的拉伸而拉伸autoresizingMask
autoresizingMask = UIViewAutoresizing()
//(一般在横竖屏切换时,自动相应布局)
// oc写法
redView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin;
// swift 写法
var arm1 = UIViewAutoresizing.None
arm1.unionInPlace(UIViewAutoresizing.FlexibleRightMargin)
arm1.unionInPlace(UIViewAutoresizing.FlexibleLeftMargin)
arm1.unionInPlace(UIViewAutoresizing.FlexibleBottomMargin)
arm1.unionInPlace(UIViewAutoresizing.FlexibleTopMargin)
redView.autoresizingMask = arm1
// 自动相应宽高布局
// swift写法
redView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
- 协议的试用
协议中方法的可选性,类似oc,方法前面用optional修饰,并且方法和协议前都要用@objc修饰
网友评论