【发布时间】:2013-08-07 07:09:01
【问题描述】:
我有一段看起来很简单的代码让我完全摸不着头脑。
NSInteger ymax;
NSInteger ymin;
NSInteger numberIndex1;
NSInteger numberIndex2;
for (NSNumber *theNumber in array2)
{
if ([theNumber integerValue] > ymax) {
ymax = [theNumber integerValue];
numberIndex1 = [array2 indexOfObject:theNumber];
}
}
for (NSNumber *theNumber in array2)
{
if ([theNumber integerValue] < ymin) {
ymin = [theNumber integerValue];
numberIndex2 = [array2 indexOfObject:theNumber];
}
}
NSLog(@"Highest number: %d at index: %d", ymax, numberIndex1);
NSLog(@"Lowest number: %d at index: %d", ymin, numberIndex2);
NSLog输出为:
最高数:129171656 索引:-1073752392(嗯??)
最低数字:57,索引:5(正确)
你如何解释这种奇怪的行为?这两个功能看起来都一样。一个工作,一个不工作?我已经玩过很多次了,但我仍然无法将手指放在它上面。任何帮助将不胜感激/
【问题讨论】:
-
你初始化了 NSIntegers 了吗?
-
按照上面的代码初始化它。
-
数组中的数字有多大?
-
抱歉,我没看到你在哪里给 NSIntegers 初始值...
-
@JohnWoods 数组很小。大约 12 个元素,最大的是 3 位数字。 @Raspu 奇怪的是,它似乎在没有任何初始值的情况下工作。但即使我确实尝试使用数组的第一个元素像
NSInteger ymin = [array2 indexOfObject:0];那样初始化它,我也得到了相同的结果。
标签: iphone ios objective-c nsmutablearray