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。
答案 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 !!!