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
}
}
巴扎黑2017-04-18 09:49:07
이 코드는 테이블뷰 로드 횟수만큼 실행됩니다. 데이터소스 설정 시 1회 실행되고, 이후 로드 시 1회 실행
으아아아아래 코드가 실행되는 횟수는 섹션 수에 따라 다릅니다. 섹션이 있는 만큼 여러 번 실행되며, 로드할 때마다 현재 테이블뷰의 섹션 수에 따라 로드됩니다.
으아아아위는 코드 실행 횟수에 대한 논리입니다.
귀하의 질문입니다. 이론적으로 말하면, 스트로이보드에는 일반적으로 데이터가 들어 있습니다. 데이터가 없더라도 한 번(또는 데이터가 있는 경우 여러 번) 실행됩니다. 이는 기본 데이터 소스 포인터로 인해 발생합니다. 코드에서 데이터 소스를 설정하면 자연스럽게 다시 로드됩니다. 그래서 여러 번 실행되었습니다. iOS 개발의 경우 순수 코드가 여전히 권장됩니다.
天蓬老师2017-04-18 09:49:07
iOS 10.1 테스트를 5번이나 진행했는데...
TableView가 초기화부터 화면에 나타나기까지 일련의 과정을 거쳤다는 걸 우리는 알 수 없고, 한 번만 얻는 것만으로는 충분하지 않습니다. 예, Apple은 아마도 이 값을 저장하지 않을 것입니다.
중단점 호출 스택에 아무 것도 표시되지 않습니다... 필요할 때마다 대리자에게 테이블을 요청할 수 있으며 성능에 영향을 미치지 않는 것으로 이해합니다. 근본 원인을 파악하려면 소스 코드를 살펴봐야 할 것입니다...