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

Jef*_*eff 10 struct ios nsrange lldb

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
Run Code Online (Sandbox Code Playgroud)

我的代码有一个badRange在断点处命名的NSRange var ,并将其传递给了.从而:

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

到底是怎么回事?

谢谢.

Dal*_*him 4

在 OS X 项目中工作时,在调试器中创建 NSRange 工作正常,但不适用于 iOS 项目。它在 iOS 上不起作用的原因是,即使 Foundation 提供了声明该结构的头文件,它也没有公开任何相应的符号。基本上,在 iOS 上,NSRange 只是一个前向声明,我不知道实现的真正符号。