【发布时间】:2012-03-01 07:16:36
【问题描述】:
我发现了一个引发相同异常的类似问题,但它没有帮助。无人接听:Getting "Single stepping until exit from function CALayerGetDelegate, which has no line number information." in iphone sdk
程序为aa+a+时的示例参数
当参数程序再次调用方法时导致中断的示例参数是aa+a+a。为什么?
这是我的代码:
+(NSSet *)variablesUsedInsideProgram:(id)program
{
NSMutableSet *variablesUsed = [NSMutableSet setWithArray:program];
//put the program into a mutable set then pop off everything else that is !a,!b,!c
id objectReferenceFromVariablesUsed = nil;
for(objectReferenceFromVariablesUsed in variablesUsed) //breaks here
{
if (!([objectReferenceFromVariablesUsed isEqual:@"a"] | [objectReferenceFromVariablesUsed isEqual:@"b"] | [objectReferenceFromVariablesUsed isEqual:@"c"]))
{
[variablesUsed removeObject:objectReferenceFromVariablesUsed];
}
}
return [variablesUsed copy];
}
DEBUG 打印出我得到的语句:
(gdb) po program<__NSArrayI 0x68a7a00>(a,a,+,a,+,a)
所以我知道我的程序推入了变量a
(gdb) po variablesUsed
{(
"+",
a
)}
添加到 NSMutableSet 时程序中的唯一值
我知道正在发生的事情:
objectReferenceFromVariablesUsed = +,然后从 Set 中弹出
(gdb) po variablesUsed {( a )}
回到循环然后中断。获取错误消息“单步执行直到从函数 objc_exception_throw 退出,该函数没有行号信息。Catchpoint 2(抛出异常)。
有人知道是什么原因造成的吗?
【问题讨论】:
-
if 语句中的按位或 (|) 与逻辑或 (||) 相比是有意的吗?有关差异的描述,请参阅此问题:stackoverflow.com/questions/3698741/…
标签: objective-c exception enumeration