gpt4 book ai didi

iphone - 为什么 iOS 4.0 中的数组显示为 __NSArrayI(以及如何匹配它)?

转载 作者:行者123 更新时间:2023-12-03 20:22:30 25 4
gpt4 key购买 nike

过去在以前的 iPhoneOS 下将自己标识为 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];

然后输入另一个字典,如下所示:

    myRecord = [[NSMutableDictionary alloc] initWithCapacity:5];
[myRecord addEntriesFromDictionary:newDictionary];

其他所有东西都有我期望的类:NSCFString、NSCFNumber、NSCFBoolean,但没有数组,我不知道如何匹配它。

最佳答案

为什么会出现这样的情况?因为我们不能信任从一个版本到另一个版本的类的内部名称。

如何匹配?不要尝试匹配类的名称或对等类。只需使用 isKindOfClass: 它将匹配一个类及其子类,并对像这样的奇怪变体做正确的事情。

例如:

    } else if ([thisValue isKindOfClass:[NSArray class]]) {

请注意,您正在将 isKindOfClass: 消息发送到对象,而不是发送到[对象类]!

关于iphone - 为什么 iOS 4.0 中的数组显示为 __NSArrayI(以及如何匹配它)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com