如何将id
参数与IBAction
比较为实例指针?
IBOutlet UITextField * tw1;
IBOutlet UITextField * tw2;
==
看起来不起作用:
- (IBAction) editingDidEnd:(id) sender
{
if (sender == tw1) {
...
}
if (sender == two) {
...
}
}
id
类似于(void*)
,所以这两个指针的比较应该是真的,因为它们都指向同一个点,但它没有。
答案 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)
我认为比较没问题,但我不确定的原因是我不会那样编码。为什么不采取两种行动,然后你肯定知道哪一个被解雇了?
比较指针似乎错了。