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