Koji uticaj ima korišćenje anotacije @objc dynamic u kodu?
sobes.tech АИ
Одговор од АИ
Napomena @objc dynamic u Swiftu obavlja dve glavne funkcije:
-
@objc — čini metodu ili svojstvo dostupnim za Objective-C runtime. Ovo je neophodno ako želite koristiti dinamičko usmeravanje, interagovati sa API-jem u Objective-C, kao što je KVO (Posmatranje vrednosti po ključu), selektori ili stari kod.
-
dynamic — primorava kompajler da koristi dinamičko usmeravanje putem Objective-C runtime-a, umesto statičkog ili ugrađenog optimizovanja. Ovo omogućava, na primer, presretanje poziva metoda, što je neophodno za KVO.
Zajedno, @objc dynamic se obično koristi za svojstva i metode koje treba da podržavaju dinamičko posmatranje promena (KVO) ili budu dostupne iz Objective-C.
Primer:
class Person: NSObject {
@objc dynamic var name: String = ""
}
let person = Person()
var observation = person.observe(\.name, options: [.new]) { object, change in
print("Ime se promenilo na \(change.newValue ?? "")")
}
person.name = "Ivan" // Pokreće posmatrača
Bez @objc dynamic, KVO neće raditi, jer mehanizam počiva na Objective-C runtime-u i dinamičkom usmeravanju.