它的__NSDictionaryM是什么.为什么NSStringFromClass不返回NSMutableDictionary?

mam*_*mcx 1 objective-c nsmutabledictionary

我得到了一些我无法得到的奇怪的东西.我正在使用第三方控件(https://github.com/brunow/TableKit.m),它可以:

+ (NSSet *)cellMappingsForObject:(id)object mappings:(NSDictionary *)mappings {
    NSString *objectStringName = NSStringFromClass([object class]);
    return [mappings objectForKey:objectStringName];
}
Run Code Online (Sandbox Code Playgroud)

它创建了一个基于类名称的映射:

[TKCellMapping mappingForObjectClass:[NSMutableDictionary class] block:^(TKCellMapping *cellMapping) {
//CODE
}];
Run Code Online (Sandbox Code Playgroud)

它根据映射检查数据源对象.这些对象是为我构建的:

while ([rs next]) {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    for (NSString *fieldName in [props allKeys]) {
        //CODE                
        [dict setValue:fieldValue forKey:fieldName];
    }
    [list addObject :dict]; //<--This is the datasource. The map is against each dict
}
Run Code Online (Sandbox Code Playgroud)

所以,我告诉它的每一个地方NSMutableDictionary.但后来发生这种奇怪的事情.

当它打电话NSStringFromClass([NSMutableDictionary class])说它NSMutableDictionary但是当它NSStringFromClass([rowDict class])叫它时说__NSDictionaryM!

为什么会这样?我检查标题__NSDictionaryM和Xcode导航到NSMutableDictionary(?).我无法创建对象__NSDictionaryM.

顺便说一句,我需要做些什么NSStringFromClass才能获得更换NSMutableDictionary

小智 11

它是一个私人子类NSMutableDictionary.这一个NSMutableDictionary.在此处阅读有关类集群的更多信