如何在Objective-C中测试相等性?

时间:2011-11-05 14:24:48

标签: objective-c

比较顶视图时,第一个{}无法执行。 ==平等测试失败。

init,我

    [self setCurrentPuzzleView:p1];

后来,我

if ([self currentPuzzleView] == p1) {
    NSLog(@"Removing P1 from SuperView");
    [p1 removeFromSuperview];
} else {
    NSLog(@"Removing P2 from SuperView");
    [p2 removeFromSuperview];
}

现在应该如何比较观看次数?我认为==对于指针类型

是可以的
if ([self currentPuzzleView] == p1) {

视图之间的关系是通过InterfaceBuilder建立的,其中每个视图(p1,p2等)都声明为IBOutlet Puzzle1 *p1

3 个答案:

答案 0 :(得分:5)

Objective-C中的

==检查身份。这是两个指针是否指向同一个对象。

测试平等使用:[objectA isEqual:objectB]。默认情况下,它与==相同,但可以覆盖它以使其具有自定义相等性。

修改

说完了并重新阅读了你的问题。这两个指针看起来好像指向同一个对象。在比较它们之前,尝试打印您要比较的两个对象。还要尝试打印他们的内存地址:NSLog(@"Address: %d", &p1);可能会帮你。

答案 1 :(得分:1)

我会为该视图设置标记并比较标记。

if(view.tag == 66)
{
 // do something
}
else
{
// else do this
}

答案 2 :(得分:0)

您的代码对我来说很好。

也许self.currentPuzzleview正在其他地方修改?

在代码中设置断点并检查值,或在NSLog()调用中打印值。