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

标签 objective-c

比较顶部 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/

相关文章:

objective-c - ios - 如何连接字符串以创建 url?

ios - 获取应用程序的主窗口

ios - Swift - UIDatePicker 限制选择天数

ios - SpriteKit : One node with two physics body

ios - 如何清空 UIPageViewController(移除里面的 ViewControllers)

ios - 我们可以使用 Twilio iOS SDK 进行 VOIP 推送通知吗?

ios - 无法在运行时交换 NSDictionary 的方法实现 objectForKey?

ios - UITableView 中的固定行

ios - 如何根据其他 UITextField 输入显示隐藏的 UITextField

objective-c - 禁用在 JetBrains AppCode 中添加匹配的方括号