Как проверить, есть ли у объекта какой-то конкретный селектор PUBLIC во время выполнения?
Мне нужно выяснить, есть ли у какого-то конкретного объекта какой-то определенный селектор И, могу ли я его вызвать. Мне нужно проверить это во время выполнения. Я знаю о respondsToSelector:
но, к сожалению, он также проверяет защищенный интерфейс класса.
Мне нужно проверить, существует ли селектор И является ли он общедоступным. Есть ли способ, которым я могу это сделать?
1 ответ
В Objective-C нет понятия публичных, частных или защищенных методов. Только IDE может включать эти концепции для обеспечения некоторого ООП при разработке, но во время выполнения все идет, поэтому стандартного способа сделать это не существует.
Что вы можете сделать, это создать подкласс (или создать категорию со связанными объектами) NSObject, создать массив с открытыми селекторами методов, где каждый следующий подкласс добавляет свои открытые методы к этому массиву и либо использовать свой собственный метод, либо метод swizzle RespondsToSelector, чтобы проверить соответствие в ваш массив.