Maison  >  Questions et réponses  >  le corps du texte

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中文网2741 Il y a quelques jours545

répondre à tous(2)je répondrai

  • 巴扎黑

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

    Ce code est exécuté autant de fois que votre tableview est chargée. Exécuté une fois lors de la configuration de la source de données, puis exécuté une fois à chaque chargement

    override func numberOfSections(in tableView: UITableView) -> Int {
           
            return 1
        }
    

    Le nombre de fois que le code ci-dessous est exécuté dépend du nombre de sections dont vous disposez. Il sera exécuté autant de fois que vous avez de sections, et après chaque chargement, il sera chargé en fonction du nombre de sections dans votre tableview actuelle.

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
            print("Test")
            return 0
        }
    

    Ce qui précède est la logique du nombre d'exécutions de code.
    Votre question. Théoriquement parlant, votre stroyboard contient généralement des données. Même s'il n'y a pas de données, il s'exécutera une fois (ou plusieurs fois s'il y a des données). Cela est dû au pointeur de source de données par défaut. Dans le code, si vous définissez la source de données, elle se rechargera naturellement. Il a donc été exécuté plusieurs fois. Pour le développement iOS, le code pur est toujours recommandé.

    répondre
    0
  • 天蓬老师

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

    Le test iOS 10.1 a été exécuté 5 fois...
    Je pense qu'il n'est pas nécessaire de s'attarder là-dessus. Nous ne savons pas que TableView est passé par une série de processus depuis l'initialisation jusqu'à son apparition à l'écran, et cela ne devrait pas suffire pour l'obtenir une seule fois. Oui, Apple ne conservera probablement pas cette valeur.
    Je ne vois rien dans la pile d'appels du point d'arrêt... Je crois comprendre que la table peut être demandée au délégué à chaque fois qu'elle est nécessaire, et il n'y aura aucun impact sur les performances. Si vous voulez aller au fond des choses, il faudra probablement regarder le code source...

    répondre
    0
  • Annulerrépondre