Junior — Middle
Comment peut-on suivre les appels de la méthode viewDidLoad dans toutes les instances de contrôleurs dans l'application?
sobes.tech IA
Réponse de l'IA
Pour suivre les appels de la méthode viewDidLoad dans tous les instances de contrôleurs iOS, vous pouvez utiliser la technique de swizzling, qui consiste à remplacer dynamiquement l'implémentation de la méthode à l'exécution.
Exemple en Swift :
import UIKit
extension UIViewController {
static let swizzleViewDidLoad: Void = {
let originalSelector = #selector(viewDidLoad)
let swizzledSelector = #selector(swizzled_viewDidLoad)
guard let originalMethod = class_getInstanceMethod(UIViewController.self, originalSelector),
let swizzledMethod = class_getInstanceMethod(UIViewController.self, swizzledSelector) else { return }
method_exchangeImplementations(originalMethod, swizzledMethod)
}()
@objc func swizzled_viewDidLoad() {
// Appel de la méthode originale (maintenant swizzled_viewDidLoad)
swizzled_viewDidLoad()
// Journalisation ou autre logique
print("viewDidLoad appelé pour \(type(of: self))")
}
}
// Appeler le swizzling une seule fois, par exemple dans AppDelegate
UIViewController.swizzleViewDidLoad
Cette approche permet d'intercepter les appels à viewDidLoad pour tous les contrôleurs sans modifier leur code source.