为什么NSInteger在日志控制台中出现的不同于调用堆栈变量

时间:2014-05-02 10:47:12

标签: ios objective-c xcode debugging xcode5

我有一个NSInteger类型的变量..如果我在变量上设置断点并将其输出到日志中,我得到预期值(即0)..但是它看起来非常不同调试器堆栈跟踪变量列表(180821440)..有人可以解释一下发生了什么吗?

enter image description here

我正在使用Apple LLVM 5.1运行Xcode 5.1.1,编译器具有None优化级别

1 个答案:

答案 0 :(得分:0)

来自上面Martin RDroppy的讨论..我发现这种情况正在发生。

在原始代码中,我从http调用中获取taxiAmount值,如下所示:

[serverGateway_ getTaxiAmountWithCoordinate:coordBlock onSuccessBlock:^(NSData *responseData)
 {
     [parser_ parseTaxiAmountWithData:responseData onSuccessBlock:^(NSNumber *taxiAmount)
     {
          [cityManager_ setTaxiAmount:taxiAmount];

所以我向NSNumber varialbe

发送NSInteger
- (void)setTaxiAmount:(NSInteger)taxiAmount
{
    taxiAmount_ = taxiAmount;
}

在这种情况下,键入po taxiAmount返回0,而p taxiAmount返回180520272:

所以导致整个hoopala的原因是将NSNumber视为NSInteger ..明显纠正了这条线

[cityManager_ setTaxiAmount:[taxiAmount integerValue]]; 

修复了问题(并清除了混乱)

enter image description here