Как оценить пользовательский класс, изменчивый или неизменный? - PullRequest
0 голосов
/ 08 мая 2018

Мы знаем, что NSArray является неизменным, а NSMutableArray изменяемым, потому что мы можем судить по его имени. Но как мы можем узнать, является ли пользовательский класс изменчивым?

1 Ответ

0 голосов
/ 08 мая 2018

Я полагаю, что для этого нет специального интерфейса или API в библиотеке Objective-C или ОС.

Вы можете начать с проверки известных типов следующим образом:

if ([obj isKindOfClass:[NSMutableArray class]]) {
    return YES; // mutable
}
if ([obj isKindOfClass:[NSMutableSet class]]) {
    return YES; // mutable
}
... etc.

А для ваших собственных пользовательских объектов вы можете создать свой собственный протокол «маркера»:

@protocol MYMutable <NSObject>
@end

(вы применяете этот протокол к своим собственным объектам)

А затем проверьте ваши объекты следующим образом:

if ([obj conformsToProtocol:@protocol(MYMutable)]) {
    return YES;
}

Это не идеальное решение, но оно может охватывать 90% случаев использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...