swift3的改变

来源:互联网 发布:mac设置下面图标 编辑:程序博客网 时间:2024/06/07 00:12
  1. tableView sectionHeaderView
  2. CGPoint,CGRect,CGSize使用
  3. CGPointZero

swift3中sectionHeaderView要想正常显示必须实现下面两个方法

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {    }    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {    }

swift3中不能使用结构体方法,

CGRectMake,CGSizeMake,CGPointMake

只能使用构造方法

CGRect(x: ,y: ,width: ,heght:),CGSizeMake(width: , height: ) ,CGPointMake(x: , y:)

swift3中CGPointZero
CGPoint.zero

4.Any与Anyobject

在swift2中Alamofire中
public typealias Parameters = [String: Anyobject]
为适配swift3
public typealias Parameters = [String: Any]
因此当你调用Alamofire时,传入参数类型为[String: Any]

AnyObject 可以表示任何类类型的实例。
Any 可以表示任何类型,包括函数类型


5.Swift3中观察者的改变

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) 

新值和旧值的取用使用下面的代码

let new = change![NSKeyValueChangeKey.newKey]let old = change![NSKeyValueChangeKey.oldKey]

有一点是值的注意的 Swift3中取出的值的类型要对应正确
比如,swift2中,观察UIButton的highlighted属性时可以使它抛向一个Int类型

let new = change![NSKeyValueChangeKey.newKey] as! Int

swift3中类型必须对应正确才能正确取用(否则程序Crash掉),这样取用

let new = change![NSKeyValueChangeKey.newKey] as! Bool

这是因为UIButton的highlighted属性本事是Bool类型。但是Swift2沿用了OC的值类型,取用时使用C中的值类型true是1,false是0,才造成了在2中抛向的是一个Int型。

关于Swift3的类型问题可以参见这篇文章Swift Anyobject


原创粉丝点击