Разные значения int или одинаковые? EXC_BAD_ACCESS в NSLog - PullRequest
0 голосов
/ 11 марта 2012

У меня есть этот код:

likeButton.tag = spik._id;
NSLog(@"spik ID=%@   likebtn.tag=%@",spik._id,likeButton.tag);
NSLog(@"%@", likeButton);

, где spik._id равно NSInteger

И это вывод:

2012-03-11 19:35:37.751 KwikSpik[44277:ce03] spik ID=39975   likebtn.tag=39975   
2012-03-11 19:35:37.752 KwikSpik[44277:ce03] <<UIButton: 0xd178b60; frame = (20 12604; 30 30); opaque = NO; tag = 90793136; layer = <CALayer: 0xd1788d0>>

Вы видите, что likeButton.tag = 39975 здесь, но когда я регистрирую кнопку, ее тег равен 90793136.

если я напишу NSLog(@"spik ID=%@ likebtn.tag=%d",spik._id,likeButton.tag);

тогда я получу

012-03-11 23:27:38.290 KwikSpik[45326:ce03] spik ID=39975 likebtn.tag=87582784

Это разные представления одного числа или разных значений? Почему эти значения разные?

Позже, если я напишу

NSLog(@"tag d %d",sender.tag);
NSLog(@"tag @ %@",sender.tag);

где отправитель likeButton, затем первый NSLog выводит 87582784, а второй аварийно завершает работу с EXC_BAD_ACCESS (code = 1, address = 0x30...)

Что происходит? Почему в likeButton.tag и spik._id есть разные значения - или они просто выглядят по-разному?

Почему NSLog в первый раз вывел likeButton.tag с %@, а во второй раз потерпел крах?

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Они интерпретируются NSLog по-разному, как вы использовали %@.Используйте %d для вывода в виде целого числа.

NSLog(@"spik ID=%d   likebtn.tag=%d", spik._id,likeButton.tag);
1 голос
/ 11 марта 2012
NSLog(@"spik ID=%@ likebtn.tag=%d", spik._id, likeButton.tag);

Когда вы регистрируете свою кнопку, тег не рассматривается как int.

...