不同的int值还是相同的? NSLog的EXC_BAD_ACCESS

时间:2012-03-11 14:53:22

标签: objective-c ios int exc-bad-access nsinteger

我有这段代码:

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

其中spik._idNSInteger

这是输出:

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.tagspik._id中存在不同的值 - 或者它们看起来不同?

为什么NSLog第一次用likeButton.tag输出%@并第二次崩溃?

2 个答案:

答案 0 :(得分:1)

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

当您记录按钮时,标记不被视为int。

答案 1 :(得分:1)

NSLog使用%@时对它们的解释不同。使用%d输出为整数。

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