Таъсири истифодаи қайдномаи @objc dynamic дар код чист?
sobes.tech AI
Ҷавоб аз AI
یادداشت @objc dynamic در Swift دو وظیفه اصلی را انجام میدهد:
-
@objc — یک روش یا ویژگی را در دسترس زمان اجرا Objective-C قرار میدهد. این برای استفاده از مسیریابی دینامیک، تعامل با API در Objective-C، مانند KVO (مشاهده مقدار کلید)، سلوکتورها یا کد قدیمی ضروری است.
-
dynamic — کامپایلر را مجبور میکند تا از مسیریابی دینامیک از طریق زمان اجرا Objective-C استفاده کند، به جای بهینهسازیهای استاتیک یا جاسازی شده. این امکان، برای مثال، گرفتن تماسهای متد، که برای KVO لازم است، را فراهم میکند.
با هم، @objc dynamic معمولاً برای ویژگیها و متدهایی استفاده میشود که باید از مشاهده دینامیک تغییرات (KVO) پشتیبانی کنند یا از Objective-C در دسترس باشند.
مثال:
class Person: NSObject {
@objc dynamic var name: String = ""
}
let person = Person()
var observation = person.observe(\.name, options: [.new]) { object, change in
print("نام تغییر کرد به \(change.newValue ?? "")")
}
person.name = "Ivan" // فعالسازی ناظر
بدون @objc dynamic، KVO کار نخواهد کرد، چون مکانیزم بر پایه زمان اجرا Objective-C و مسیریابی دینامیک است.