Я полагаю, что для этого нет специального интерфейса или 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% случаев использования.