如何在lldb中调用NSArray的enumerateObjectsUsingBlock?

How to call NSArray's enumerateObjectsUsingBlock in lldb?

我想在调试时调用 enumerateObjectsUsingBlock 打印数组中的每个对象。 但是 lldb 似乎不支持 block ?有什么方法可以使它正常工作吗?

(lldb) expr -- [self.choiceQuestion.allNewRecommenedItems enumerateObjectsUsingBlock:void ^(id obj,NSUInteger index,BOOL* stop){NSLog(@"%@",obj);}]
error: <user expression 9>:1:76: expected '(' for function-style cast or type construction
[self.choiceQuestion.allNewRecommenedItems enumerateObjectsUsingBlock:void ^(id obj,NSUInteger index,BOOL* stop){NSLog(@"%@",obj);}]

如果我将您的示例放在源文件中 - 以消除表达式解析器可能出现的问题 - 我会遇到与您显示的相同的语法错误。所以显然这不是合法的块语法。但是如果我尝试(只是删除 void):

[myArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@", obj); }];

编译成功。毫不奇怪,该表达式也适用于表达式计算器。

我怀疑由于编译器从其主体的 return 值推断出块的类型,因此 return 类型规范是不允许的,但你必须找到更多人熟悉块语法的细节才能确定。

感谢 JimIngham 的回答。 在 lldb 中打印数组的具体答案如下:

(lldb) expr -- [self.choiceQuestion.allNewRecommenedItems  enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {(void)NSLog(@"11");}]