将id发送者与实例指针进行比较

时间:2011-11-28 22:04:27

标签: objective-c cocoa pointers comparison

如何将id参数与IBAction比较为实例指针?

IBOutlet UITextField * tw1;
IBOutlet UITextField * tw2;

==看起来不起作用:

- (IBAction) editingDidEnd:(id) sender 
{

    if (sender == tw1) {
       ...
    }
    if (sender == two) {
       ...
    }
}

id类似于(void*),所以这两个指针的比较应该是真的,因为它们都指向同一个点,但它没有。

2 个答案:

答案 0 :(得分:3)

在这一行:(sender == two),“两个”不是“tw2”。如果这不是你问题中的拼写错误,那就是你的程序中的错误。

如果错字不是问题,可能与你认为的方式没有关系。添加这些行以查看正在发生的事情:

NSLog(@"sender: %p, tw1: %p, tw2: %p", sender, tw1, tw2); //changed %x to %p
NSLog(@"sender == tw1: %d", sender == tw1);
NSLog(@"sender == tw2: %d", sender == tw2);

如果tw1和tw2为0,则表示在Interface Builder中没有连接它们。

答案 1 :(得分:0)

我认为比较没问题,但我不确定的原因是我不会那样编码。为什么不采取两种行动,然后你肯定知道哪一个被解雇了?

比较指针似乎错了。