Sobes.tech
Junior — Middle

Koji uticaj ima korišćenje anotacije @objc dynamic u kodu?

sobes.tech АИ

Одговор од АИ

Napomena @objc dynamic u Swiftu obavlja dve glavne funkcije:

  1. @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.

  2. 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.