【发布时间】:2022-01-25 16:04:17
【问题描述】:
想象一下下面的代码:
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@200, @100, nil];
NSInteger n1 = (NSInteger)[arr objectAtIndex:0];
NSInteger n2 = (NSInteger)[arr objectAtIndex:1];
NSInteger r = n1 + n2;
NSLog(@"n: %lid", r);
我得到的结果是:-4309586476825365866d,预期的结果是:300。
我还尝试在调试器中评估各个表达式,以检查从数组中读取值时得到的结果,如下所示:po (NSInteger)[arr objectAtIndex:0]。这显示了正确的数字,但是当尝试将它们相加时:po (NSInteger)[arr objectAtIndex:0] + (NSInteger)[arr objectAtIndex:0],生成了无效的结果。
任何想法为什么?我是 Objective-C 的新手,因此我可以得到有关该问题的更多信息的任何来源。
【问题讨论】:
-
NSArray只能容纳对象:即NSNumbers。-objectAtIndex:返回数字的指针;将其转换为NSInteger不是您想要做的。相反,使用[[arr objectAtIndex:0] integerValue];
标签: objective-c xcode