iOS swift-deinit
2019-04-25 本文已影响3人
samtake
deinit
deinit: 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数和OC中的dealloc 一样的,通常在deinit和dealloc中需要执行的操作有:
- 对象销毁
- KVO移除
- 移除通知
- NSTimer销毁
deinit {
NotificationCenter.default.removeObserver(self)
}
@objc func
在 Swift 代码中,使用@objc修饰后的类型,可以直接供 Objective-C 调用。可以使用@objc修饰的类型包括:
- 未嵌套的类
- 协议
- 非泛型枚举(仅限于原始值为整形的类型)
- 类和协议中的属性和方法
- 构造器和析构器
- 下标
@objc func backButtonClick(button:UIButton) -> Void {
navigationController?.popViewController(animated: false)
}
_下划线 忽略作用
extension 扩展
convenience 便利
使用convenience修饰的构造函数叫做便利构造函数
便利构造函数通常用在对系统的类进行构造函数的扩充时使用。
便利构造函数的特点:
1、便利构造函数通常都是写在extension里面
2、便利函数init前面需要加载convenience
3、在便利构造函数中需要明确的调用self.init()
as
1、和 "as" 右边类型一致
2、是右边类型的子类(这种情况在java里叫向上转型)
as!
如果 碰到as 左边类型是右边类型的父类则会报错!(as不可以用于父类转子类,用java话说,不支持向下转型),由此可用as!(强转)
编译器也会提示你用as!, as!强转如果类型不符合会报错。
as?
as? 相当于optional类型,如果转换失败返回nil。