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.
来源: http://www.jianshu.com/p/266a327330df