Обратите внимание, что [super class]
- это не то же самое, что [self superclass]
. Цитирование документов:
Objective-C предоставляет два термина, которые могут использоваться в определении метода для ссылки на объект, который выполняет метод - self и super.
Они отличаются тем, как компилятор будет искать реализацию метода, и в некоторых случаях они будут означать одно и то же.
В этом случае вы хотите:
NSLog(@"SUPER CLASS: %@", [self superclass]); // logs "NSObject"
для проверки класса суперкласса объекта, и вам понадобится подкласс UIStoryBoard, а не категория, чтобы иметь возможность использовать:
return [super instantiateInitialViewController];
Почему [super class]
не записывает то, что вы ожидаете, это другая тема. Если вам интересно, этот пост Что такое метакласс в Objective-C? является хорошей отправной точкой.