Искам да знам дали суперкласът прилага метод 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. Прави го не проверете дали суперкласът прилага метода.