Сравнение идентификатора отправителя с указателем экземпляра - PullRequest
0 голосов
/ 29 ноября 2011

Как сравнить аргумент id с IBAction, с указателем экземпляра?

IBOutlet UITextField * tw1;
IBOutlet UITextField * tw2;

== не работает:

- (IBAction) editingDidEnd:(id) sender 
{

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

id это что-то вроде (void*), поэтому сравнение этих двух указателей должно дать значение true, поскольку оба указывают на одно и то же место, но это не так.

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

В этой строке: (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.

0 голосов
/ 29 ноября 2011

Я думаю, что сравнение в порядке, но причина, по которой я не уверен, заключается в том, что я бы не кодировал это таким образом.Почему бы не выполнить два действия, и тогда вы точно будете знать, какое из них было запущено?

Сравнение указателей кажется неправильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...