比较顶部 View 时,第一个 {} 无法执行。 == 相等性测试失败。
在init
中,我
[self setCurrentPuzzleView:p1];
后来,我
if ([self currentPuzzleView] == p1) {
NSLog(@"Removing P1 from SuperView");
[p1 removeFromSuperview];
} else {
NSLog(@"Removing P2 from SuperView");
[p2 removeFromSuperview];
}
现在应该如何比较 View ?我认为 == 可以用于指针类型
if ([self currentPuzzleView] == p1) {
View 之间的关系是通过 InterfaceBuilder 建立的,其中每个 View (p1、p2 等)都声明为 IBOutlet Puzzle1 *p1
。
最佳答案
Objective-C 中的
==
检查身份。即两个指针是否指向同一个对象。
要测试是否相等,请使用:[objectA isEqual:objectB]
。默认情况下,它与 ==
相同,但可以覆盖它以具有自定义相等性。
编辑
话虽如此,并重新阅读了您的问题。这两个指针看起来确实指向同一个对象。在比较它们之前尝试打印您正在比较的两个对象。也可以尝试打印它们的内存地址:NSLog(@"Address: %d", &p1);
可能会帮到你。
关于objective-c - 如何在 Objective-C 中测试相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020776/