Как мне получить список всех классов, соответствующих определенному протоколу в Xcode 4? - PullRequest
11 голосов
/ 27 марта 2012

Я новичок в Xcode. Я хочу знать, как я могу знать, что все классы соответствуют определенному протоколу в Xcode 4.3.1? И как я могу знать все подклассы одного класса?

Ответы [ 2 ]

17 голосов
/ 27 марта 2012

Используйте функции времени выполнения Objective-C .

  • objc_getClassList, чтобы получить список Class es
  • class_getSuperclass или -superclass метод обхода цепочки суперкласса
  • class_conformsToProtocol или метод -conformsToProtocol: для проверки соответствия класса протоколу
8 голосов
/ 21 мая 2012
Protocol *protocol = @protocol(YourProtocol);

int numberOfClasses = objc_getClassList(NULL, 0);
Class *classList = malloc(numberOfClasses * sizeof(Class));
numberOfClasses = objc_getClassList(classList, numberOfClasses);

for (int idx = 0; idx < numberOfClasses; idx++) 
{
    Class class = classList[idx];
    if (class_getClassMethod(class, @selector(conformsToProtocol:)) && [class conformsToProtocol:protocol])
    {
        NSLog(@"%@", NSStringFromClass(class));
    }
}
free(classList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...