Почему `__NSArrayI` не своего рода` [класс NSArray]? - PullRequest
1 голос
/ 10 января 2020

Так что я кодирую NSTableView. Все хорошо, пока мой поток управления не перестал работать.

По какой-то причине массив, определенный как _permanentItems = @[ @[@"My", @"Permanent"], @[@"Items"] ], не является чем-то вроде NSArray.

Почему это может быть?

Для контекста - он работает для NSNumber Почему @ (NO) не является классом NSNumber

ActiveItems __NSArray NSArray

1 Ответ

3 голосов
/ 10 января 2020

Метод isKindOfClass работает с экземплярами:

YES, если получатель является экземпляром aClass или экземпляром любого класса, который наследуется от aClass, в противном случае NO.

Тип itemClass сам по себе является метатипом, и это не разновидность NSArray. Здесь вы имели в виду:

if ([item isKindOfClass: arrayClass]) { ... }
     ^^^^

Если вам нужно работать полностью в классах и у вас нет экземпляра, вы можете использовать +isSubclassOfClass: вместо этого:

if ([itemClass isSubclassOfClass: arrayClass])) { ... }
               ^^^^^^^^^^^^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...