Sobes.tech
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.