我有一个我试图调试的iPhone应用程序。
我的一个方法只在执行代码时返回一个错误的值,在调试器中它很好。
int finalResponse = 0;
finalResponse = [data getInteger:@"final_response"];
然后在调试器中
p finalResponse
(int) $0 = 130450628
p [data getInteger:@"final_response"]
(int) $1 = 0
我期待0值,另一个是垃圾。我不明白为什么它会产生不同的结果,具体取决于我执行函数的方式。
编辑:
getInteger返回一个int 它使用一个底层的c库,它返回一个(const void *),就像这个
一样int* value = get_dictionary_value("final_response", dictionary);
int val = (int) *value;
return val;
答案 0 :(得分:3)
[命名不佳 - 不应该使用get
前缀] getInteger:
方法执行任何操作,例如将索引推进到data
吗?
或getInteger:
是否返回NSNumber?
getInteger:
如何实施?
只有那段代码,很难说。
答案 1 :(得分:1)
有时候,当我使用发布版本进行调试时,我会遇到奇怪的调试行为;确保您使用正确的构建阶段进行调试。