【发布时间】:2014-10-03 12:59:19
【问题描述】:
我有一个关于NSInteger 到NSString 的问题
我一直在尝试,但没有运气。
但是出于某种奇怪的原因,我的NSInteger 之一确实如此,但我不知道为什么
我有这个方法:
//Lets say loc_id = 869
-(void)addResource:(NSInteger)loc_id
{
//[loc.chosenLocations addObject:[NSString stringWithFormat@"%@",loc_id]];
NSLog([NSString stringWithFormat:@"addResource: loc_id:%@",loc_id]);
}
结果不好
因为它在xcode的调试器中给了我:addResource: loc_id:20987787696
应该是loc_id:860
当我用loc_id = 8 尝试这个时
它工作得很好为什么会出现这种奇怪的行为
或者我误解了什么感谢您的提示和帮助。
当我以字符串格式使用%@ 时,它适用于loc_id = 8,但是当我尝试使用时
%d 这是正常使用,它也会导致loc_id:20987787696
怎么来的?
方法的使用:
-(IBAction)switchChanged:(id)sender {
UISwitch *switchControl = sender;
[loc addResource:switchControl.tag]
}
-(void)addSwitch:(NSInteger)aid
{
UISwitch *sw = [[UISwitch alloc]initWithFrame:CGRectMake(x,y,w,h)]];
sw.tag = aid;
[sw addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEvenValueChanged]];
[self.View addSubview:sw];
}
//Data is dynamic (NSObject) but for example i will exclude the dynamic data.
for(int i = 0; i < 20; i++)
{
NSInteger *loc_id = 868;
[self addSwitch:loc_id];
}
在某个时候,我想将它插入到 NSMutableArray 中,如上面注释的那样,但我希望它的值为 869,它让我感到 2071894069 我想要 int 的值而不是内存的值
亲切的问候, 斯蒂芬
【问题讨论】:
-
使用 %i 代替 %@ !
-
也试过不行
-
我也得到 loc_id:20987787696
-
问题是格式中的
%@会打印指向整数的点,而不是整数本身。正如@rdurand 所说,使用%i -
NSInteger 是一个长值。您可以通过 cmd 单击 NSInteger 符号来检查这一点
标签: ios objective-c xcode xcode6