我有这段代码:
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
输出%@
并第二次崩溃?
答案 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);