Junior — Middle
Коддо колдонмодо viewDidLoad ыкмасын чакырууларын бардык контроллерлердин мисалдарында кантип көзөмөлдөсө болот?
sobes.tech AI
AIден жооп
iOS-дөгү бардык контроллерлердин бардык үлгүлөрүндө viewDidLoad методуна чакырууларды көзөмөлдөө үчүн, ишке ашыруунун учурунда методуңуздун ишке ашырылышын динамикалык түрдө алмаштырган 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 чакырууларын кармап калууга мүмкүндүк берет, алардын баштапкы кодун өзгөртпөстөн.