indexOfObjectIdenticalTo: - 获取垃圾值

时间:2013-07-18 11:22:38

标签: objective-c nsarray

NSString *yes0 = @"yes";
NSString *yes1 = @"YES";
NSString *yes2 = @"Yes";
NSString *yes3 = [NSString stringWithFormat:@"%@",yes1];

NSArray *yesArray = [NSArray arrayWithObjects:@"yes", @"YES", @"Yes", @"YES", nil];

NSArray *yesArray1 = [NSArray arrayWithObjects:yes0, yes1, yes2, yes3, nil];
NSUInteger index;


index = [yesArray indexOfObjectIdenticalTo:yes3];
NSLog(@"\nindex : %d",  index); // 1st Output


index = [yesArray1 indexOfObjectIdenticalTo:yes3];
NSLog(@"\nindex : %d",  index); // 2nd Output
  • 第一输出

我收到的输出是:“2013-07-18 16:42:04.896收藏 - 数组[2778:f803]索引:2147483647”

  • 第二输出

我收到的输出是:“2013-07-18 16:42:04.896收藏 - 数组[2778:f803]索引:3”

由于我收到的输出,我感到困惑。请解释一下为什么我在输出1中获得垃圾值的过程。根据我的说法,两个数组都与对象相同。那么为什么这个垃圾价值。

还有一个问题:

  

根据apple, indexOfObjectIdenticalTo:返回 - 最低   index的对应数组值与anObject相同。

根据我的理解,yesArray1 - yes1 yes3 相同。我期望output 2的值为1,这与实际打印值(3)相矛盾。另外,请让我理解为什么它打印3而不是1。

3 个答案:

答案 0 :(得分:2)

首先,它不是“垃圾值”,而是NSNotFound常数。

找不到第一个index,因为yes3不在yesArray中(仅在yesArray1中) - 请注意indexOfObjectIdenticalTo:检查指针标识,不是对象相等(与indexOfObject:不同)。

答案 1 :(得分:1)

indexOfObjectIdenticalTo检查指针是否相等,而不是对象相等。 2147483647不是垃圾值,它是NSNotFound的值(如果没有找到索引,则是定义的结果)。

答案 2 :(得分:0)

indexOfObjectIdenticalTo : checks for pointer equality

indexOfObject: checks Object equality.

Good Luck !!!