Junior — Middle
Kā var izsekot viewDidLoad metodes izsaukumiem visās kontrolieru instancēs lietojumprogrammā?
sobes.tech AI
Atbilde no AI
Lai sekotu viewDidLoad metodes izsaukšanas visos iOS kontrolieru eksemplāros, jūs varat izmantot swizzling metodi — dinamisku metodes realizācijas aizvietošanu izpildes laikā.
Piemērs Swift valodā:
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() {
// Oriģinālais `viewDidLoad` izsaukums (tagad `swizzled_viewDidLoad`)
swizzled_viewDidLoad()
// Žurnāla ieraksts vai cita loģika
print("`viewDidLoad` izsaukts \(type(of: self))")
}
}
// Vienreiz izsauciet, piemēram, AppDelegate
UIViewController.swizzleViewDidLoad
Šī pieeja ļauj noķert viewDidLoad izsaukumus visiem kontrolieriem bez to avota koda izmaiņām.