如何在lldb中创建和使用temp NSRange?

时间:2015-04-23 23:05:14

标签: ios struct lldb nsrange

NSRange只是一个C结构。我想在断点处在Xcode中的lldb中创建一个临时的。

专门用于NSArray方法objectAtIndex:inRange:

这不起作用。

(lldb) expr NSRange $tmpRange = (NSRange){0,4}
(lldb) expr $tmpRange
(NSRange) $tmpRange = location=0, length=4
(lldb) expr -o -- [items indexOfObject:item4 inRange:$tmpRange]
error: no matching constructor for initialization of 'NSRange' (aka '_NSRange')
error: 1 errors parsing expression

我的代码在断点处有一个名为badRange的NSRange var,并将其传递给工作。因此:

(lldb) expr -o -- [items indexOfObject:item4 inRange:badRange]
0x7fffffffffffffff
(lldb) expr badRange
(NSRange) $1 = location=0, length=3

发生了什么事?

感谢。

1 个答案:

答案 0 :(得分:4)

我最近需要创建一个NSRange,同时尝试调试一些代码并遇到了这个帖子。目前可以使用Xcode 8.3.2使用以下语法对iOS项目执行此操作。

po [@"test words here" stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:1024 range:(NSRange){0,15}]

这也有效:

expr NSRange $tmpRange = (NSRange){0,15}
po [@"test words here" stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:1024 range:(NSRange)$tmpRange]

不确定这是什么时候修复的(或者是否曾经如此,因为在第二个例子中留下(NSRange)会导致相同的错误),但它现在可以正常工作。