如何在lldb中调用NSArray的enumerateObjectsUsingBlock方法?
报错原因
你执行的命令存在语法错误:Objective-C 中 block 的返回类型需要写在^符号之后,你将void放在了^之前,不符合语法规则,所以lldb解析失败。
解决方案
以下三种方案可根据你的需求选择:
- 方案1:修正语法直接调用
enumerateObjectsUsingBlock
无返回值的block可以直接省略返回类型声明,调整后的命令如下:(lldb) expr -- [self.choiceQuestion.allNewRecommenedItems enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop) { NSLog(@"%@", obj); }] - 方案2:用快速枚举实现遍历
不想写block的话可以直接用for-in循环,写法更简单:(lldb) expr -- for (id obj in self.choiceQuestion.allNewRecommenedItems) { NSLog(@"%@", obj); } - 方案3:仅查看数组所有元素直接用
po命令
如果你不需要额外的遍历逻辑,只是要打印数组全量内容,直接执行以下命令即可:(lldb) po self.choiceQuestion.allNewRecommenedItems
补充提示
如果需要在block中实现更复杂的逻辑(如条件判断终止遍历),只需遵循block的语法规则即可:需要显式声明返回值时,将返回类型写在^符号之后,比如^NSInteger(...)。
内容的提问来源于stack exchange,提问作者ximmyxiao
相关产品推荐
相关产品推荐

