使用Extension 代替oc中 #pragma,分割代码
配合 //MARK:
举例:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
extension ViewController{
override func viewDidLoad(){}
override func viewWIllAppear(_ animated: Bool) {}
override func viewWillLayoutSubviews(){}
}
//MARK: -setup初始化设置
extension ViewController{
fileprivate func setup(){
setupStyle()
setupLayout()
}
private func setupStyle(){}
private func setupLayout(){}
}
extension ViewController: UITableViewDataSource,UITableDelegate{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}
}
MARK:在 Xcode分为两个层级,分别是 //MARK: - 和 //MARK:
加 - 会在代码概览多一条分隔线
常用介绍:
使用fileprivate 暴露内部接口 使用private 进行内部实现
extension ViewController{
// MARK: 接口
fileprivate func setup() {
setupStyle()
setupLayout()
setupTableView()
}
// MARK: Implementation 实现
private func setupStyle() {}
private func setupLayout() {}
private func setupTableView() {}
}
private 跟 extension 分割代码配合使用,通过 private 隐藏内部的实现,使用fileprivate 把接口暴露到了类内部
之前swift版本:
extension ViewController{
private func setup(){
func setupTableView(){
}
func layout(){
}
setupTableView()
layout()
}
}
========================================================
带来 两个问题:
在swift3中, 新增加 fileprivate显示表示,这个元素的访问权限为文件内私有,过去的private 对应现在的fileprivate ,
现在的private是真正的私有,离开了这个类或者结构体的作用域外面就无法访问