Junior — Middle
რომელი ტიპის დისპეჩერიზაცია ვერ ექვემდებარება Swizzling მეთოდით ცვლილებას?
sobes.tech AI
პასუხი AI-სგან
iOS-ში Swizzling მეთოდი საშუალებას აძლევს მეთოდების რეალიზაციების შეცვლას შესრულების დროს, მაგრამ მუშაობს მხოლოდ Objective-C-ის დინამიკურ დისპეტჩთან. ტიპები დისპეტჩის, რომლებიც ვერ ექვემდებარებიან ცვლილებას Swizzling-ის საშუალებით:
- სტატიკური დისპეტჩი (მაგალითად, C ან C++ ფუნქციების გამოძახებები ვირტუალურ მეთოდებს გარეშე).
- Swift-ის დისპეტჩი სტატიკურად განჭვრეტილი მეთოდების გამოყენებით (მაგალითად, ფინალური მეთოდები ან სტრუქტურების მეთოდები).
- მეთოდების გამოძახებები, რომლებიც არ ხორციელდება Objective-C runtime-ის საშუალებით (მაგალითად, მეთოდები, რომლებიც არ არის მითითებული @objc-ით).
ამიტომ, Swizzling მხოლოდ იმ მეთოდებზე ვრცელდება, რომლებიც გადიან Objective-C runtime-ის გავლით, და არ მუშაობს მხოლოდ Swift მეთოდებთან, რომლებიც არ არის @objc.