Junior — Middle
როგორ განსხვავდება სტატიკური და დინამიკური დისპეჩერი პროგრამირებაში?
sobes.tech AI
პასუხი AI-სგან
סטאַטיק שיגור (static dispatch) קורה בזמן הקומפילציה. המהדר יודע מראש איזה שיטה תיקרא ומקשר את הקריאה ישירות ליישום מסוים. זה מבטיח ביצועים גבוהים, אך מפחית את הגמישות.
שיגור דינמי (dynamic dispatch) קורה בזמן הריצה של התוכנית. קריאת השיטה נקבעת לפי סוג האובייקט בזמן ריצה, מה שמאפשר מימוש פולימורפיזם והחלפת שיטות. ב-iOS, זה מתבצע לעיתים קרובות באמצעות מנגנון ה-runtime של Objective-C, שבו קריאות שיטות נעשות דרך טבלת ההודעות.
דוגמה ב-Swift:
class Animal {
func sound() {
print("קול כלשהו")
}
}
class Dog: Animal {
override func sound() {
print("נביחה")
}
}
let animal: Animal = Dog()
animal.sound() // ידפיס "נביחה" בזכות שיגור דינמי
כאן, הקריאה ל-sound() נקבעת בזמן ריצה, שזה דוגמה לשיגור דינמי.