찾다

 >  Q&A  >  본문

ios - 使用storyboard建立tableview运行时代码运行了三次是什么情况?

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
    }
}
PHP中文网PHP中文网2771일 전568

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 09:49:07

    이 코드는 테이블뷰 로드 횟수만큼 실행됩니다. 데이터소스 설정 시 1회 실행되고, 이후 로드 시 1회 실행

    으아아아

    아래 코드가 실행되는 횟수는 섹션 수에 따라 다릅니다. 섹션이 있는 만큼 여러 번 실행되며, 로드할 때마다 현재 테이블뷰의 섹션 수에 따라 로드됩니다.

    으아아아

    위는 코드 실행 횟수에 대한 논리입니다.
    귀하의 질문입니다. 이론적으로 말하면, 스트로이보드에는 일반적으로 데이터가 들어 있습니다. 데이터가 없더라도 한 번(또는 데이터가 있는 경우 여러 번) 실행됩니다. 이는 기본 데이터 소스 포인터로 인해 발생합니다. 코드에서 데이터 소스를 설정하면 자연스럽게 다시 로드됩니다. 그래서 여러 번 실행되었습니다. iOS 개발의 경우 순수 코드가 여전히 권장됩니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:49:07

    iOS 10.1 테스트를 5번이나 진행했는데...
    TableView가 초기화부터 화면에 나타나기까지 일련의 과정을 거쳤다는 걸 우리는 알 수 없고, 한 번만 얻는 것만으로는 충분하지 않습니다. 예, Apple은 아마도 이 값을 저장하지 않을 것입니다.
    중단점 호출 스택에 아무 ​​것도 표시되지 않습니다... 필요할 때마다 대리자에게 테이블을 요청할 수 있으며 성능에 영향을 미치지 않는 것으로 이해합니다. 근본 원인을 파악하려면 소스 코드를 살펴봐야 할 것입니다...

    회신하다
    0
  • 취소회신하다