我的C知识可能存在漏洞,但我对此为何发生了一些疑惑。
(lldb) p lineGroup
(NSInteger) $17 = -1
(lldb) p (lineGroup > 4)
(bool) $18 = true
(lldb) p (lineGroup < 0 )
(bool) $19 = false
(lldb) p (-1 < 0)
(bool) $20 = true
(lldb) p ((int)lineGroup < 0 )
(bool) $21 = false
(lldb) p ((int)lineGroup > 4)
(bool) $22 = true
(lldb)
lineGroup
变量分配如下:
- (void)gotLineGroupInformation:(NSString *)lineGroupString
{
NSInteger lineGroup = [lineGroupString integerValue];
if(lineGroup >= 0)
{
// Always gets called
}
else
{
// Never gets called
}
}
谢谢, 安迪
答案 0 :(得分:2)
lldb问题似乎与Objective C integer comparison error中的问题完全相同:
卡尔·诺鲁姆在回答中说:确认 - 这是lldb IR解释器中的一个错误。
以下是修补程序修补程序的链接:http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20130520/008569.html
关于你的代码,我试图在没有成功的情况下重现这个错误:
NSString *lineGroupString = @"-1";
NSInteger lineGroup = [lineGroupString integerValue];
if(lineGroup >= 0)
{
NSLog(@"positive");
}
else
{
NSLog(@"negative"); // This log is correctly called every time
}
也许您应该尝试使用NSLog
进行调试(特别是在输入函数后,lineGroupString
的值是多少?)。