Sobes.tech
Junior — Middle

Koddaki @objc dynamic açıklamasının kullanımı ne gibi bir etki yapar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'teki @objc dynamic anotasyonu iki temel işlevi yerine getirir:

  1. @objc — bir yöntem veya özelliği Objective-C çalışma zamanına erişilebilir hale getirir. Bu, dinamik yönlendirmeyi kullanmak, Objective-C API'leriyle etkileşimde bulunmak, örneğin KVO (Anahtar-Değer Gözlemi), seçiciler veya eski kodla çalışmak istiyorsanız gereklidir.

  2. dynamic — derleyicinin çağrıların dinamik yönlendirmesini Objective-C çalışma zamanı aracılığıyla kullanmasını sağlar, statik veya gömülü optimizasyonlar yerine. Bu, örneğin, metod çağrılarını yakalamayı mümkün kılar, ki bu KVO için gereklidir.

Birlikte, @objc dynamic genellikle değişikliklerin dinamik gözlemini desteklemesi gereken veya Objective-C'den erişilebilir olması gereken özellikler ve metodlar için kullanılır.

Örnek:

class Person: NSObject {
    @objc dynamic var name: String = ""
}

let person = Person()
var observation = person.observe(\.name, options: [.new]) { object, change in
    print("İsim değişti: \(change.newValue ?? "")")
}
person.name = "İvan" // Gözlemciyi tetikler

@objc dynamic olmadan, KVO çalışmaz çünkü mekanizma Objective-C çalışma zamanı ve dinamik yönlendirmeye dayanır.