import UIKit
class TaskListController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("Test")
return 0
}
}
這段程式碼是 你的tableview load 幾次就執行幾次。設定datasource 的時候執行一次,之後 每load 都會執行一次
下面這個程式碼的執行次數取決於你的 section 數目。你有幾次section 就會執行幾次,而且每次 load 之後;它都會根據你目前tableview 的section 數目 進行載入。
以上就是程式碼運行次數的邏輯。
你的問題。理論上來說,一般是你 的 stroyboard 上面有數據。即便是沒有數據,它也會運行一次(有數據則會運行多次)這是由於預設的datasource指標引起的。 再到程式碼中,你設定了 datasource ,它自然會reload。所以就執行了多次。 iOS開發,仍然建議純程式碼。
iOS 10.1 測試運行了5 次…
感覺沒必要糾結在此,TableView 從初始化到出現在屏幕上,當中經歷了一系列的過程我們並不清楚,而且只獲取一次應該也是不夠的,蘋果應該也不會把此值存下來。
打斷點呼叫堆疊中也沒看出啥… 我的理解是 table 每次需要的時候向 delegate 要就行了,也沒啥效能影響。想刨根問底,估計只能去看源碼了…