/ / Как мога да разбера дали суперкласът също прилага същия метод, който моят подклас прилага? - цел-c, ios

Как мога да разбера дали суперкласът изпълнява същия метод, който подкласът ми изпълнява? - цел-c, ios

Искам да знам дали суперкласът прилага метод A от моя подклас, който също прилага метод A, така че спокойно да мога да извикам [super A] от моя подклас, без да получавам изключение.

NSObject "s respoToSelector: не работи в този случай, тъй като това винаги ще се върне вярно (защото моят подклас изпълнява въпросния метод). Някакви идеи?

Отговори:

12 за отговор № 1

Можете да използвате метода на класа instancesRespondToSelector: да го направя. Така че от подклас можете да се обадите [[self superclass] instancesRespondToSelector:@selector(...)] за да определите дали суперкласът прилага метода, който ви е необходим.


2 за отговор № 2

повикване [[self superclass] instancesRespondToSelector:@selector(...)] няма да работи, ако класът, който го прилагаподкласиран и методът се извиква в инстанцията на подкласирания клас. Едно от решенията е изрично да въведете името на текущия клас, който го реализира:

[[ExplicitClassName superclass] instancesRespondToSelector:@selector(...)]

0 за отговор № 3

Опитайте [[[самоклас] суперклас] инстанцииRespondToSelector: @selector (.)]]]

[super respondsToSelector:] се позовава на реализацията на superclass на respondsToSelector, която вероятно е същата като на текущия клас "s. Прави го не проверете дали суперкласът прилага метода.