Junior — Middle
Ինչպե՞ս կարելի է հետևել viewDidLoad մեթոդի կանչերին ծրագրում բոլոր կոնտրոլերների օրինակներում:
sobes.tech AI
Պատասխան AI-ից
Ինքնուրույն հետևելու համար viewDidLoad մեթոդի կանչերը iOS-ում բոլոր վերահսկիչների օրինակներում, դուք կարող եք օգտագործել swizzling մեթոդը՝ մեթոդի իրականացման դինամիկ փոխարինում գործարկման ժամանակ:
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() {
// Օգտագործում է սկզբնական `viewDidLoad`-ը (այժմ `swizzled_viewDidLoad`)
swizzled_viewDidLoad()
// Գրանցում կամ այլ տրամաբանություն
print("`viewDidLoad` կանչվել է \(type(of: self)) համար")
}
}
// Մի անգամ կանչեք, օրինակ, AppDelegate-ում
UIViewController.swizzleViewDidLoad
Այս մոտեցումը թույլ է տալիս բռնել viewDidLoad կանչերը բոլոր վերահսկիչների համար՝ առանց նրանց ծագող կոդը փոխելու։