在以前的iPhoneOSes下,用于将自己标识为NSCFArray的对象现在似乎在运行iOS 4.0的设备下将自己标识为__NSArrayI.
知道这是怎么回事?我在任何文档中都找不到它.
另外,它与"[NSArray class]"不匹配.
它应该是一个简单的数组.它的定义如下:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         thisPlayerName,@"name",
                         [NSNumber numberWithInt:[myTable.visiblePlayer.number intValue]],@"number",
                         playerCountArray,@"players",
                         [NSArray arrayWithObjects:@"easy",@"medium",@"hard",nil],@"opponent difficulty",
                         [NSNumber numberWithBool:[cardDecks getOptionBoolForKey:@"seeMoney"]],@"see money",
                         [cardDecks gameSpeedOptions],@"computer turn speed",
                         [NSArray arrayWithObjects:@"aqua",@"green",@"orange",@"purple",@"red",nil],@"player color",
                         nil];
Run Code Online (Sandbox Code Playgroud)
然后输入另一个字典,如下所示:
    myRecord = [[NSMutableDictionary alloc] initWithCapacity:5];
    [myRecord addEntriesFromDictionary:newDictionary];
Run Code Online (Sandbox Code Playgroud)
其他所有类都有我期望的类:NSCFString,NSCFNumber,NSCFBoolean,但不是数组,我无法弄清楚如何匹配它.
为什么会这样?因为我们不能信任从一个版本到另一个版本的类的内部名称.
怎么搭配呢?不要尝试匹配类的名称或等同于类.只需使用isKindOfClass:它将匹配一个类及其子类,并为像这样的奇怪变体做正确的事情.
例如:
    } else if ([thisValue isKindOfClass:[NSArray class]]) {
Run Code Online (Sandbox Code Playgroud)
请注意,您要将isKindOfClass:消息发送到对象,而不是 [object class]!
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1948 次  |  
        
|   最近记录:  |