Junior — Middle
Kuidas jälgida meetodi viewDidLoad kõiki eksemplare rakenduses?
sobes.tech AI
Vastus AI-lt
iOS-is kõigi kontrolleri eksemplarite viewDidLoad meetodi väljakutsete jälgimiseks saate kasutada swizzling-meetodit — meetodi dünaamilist asendamist käivitamise ajal.
Näide Swiftis:
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() {
// Algne `viewDidLoad` väljakutse (nüüd `swizzled_viewDidLoad`)
swizzled_viewDidLoad()
// Logimine või muu loogika
print("`viewDidLoad` kutsutud \(type(of: self))")
}
}
// Korrake ühel korral, näiteks AppDelegate'is
UIViewController.swizzleViewDidLoad
See lähenemine võimaldab kõigi kontrollijate viewDidLoad väljakutseid kinni püüda, ilma nende lähtekoodi muutmata.