首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在lldb中创建和使用临时NSRange?

如何在lldb中创建和使用临时NSRange?
EN

Stack Overflow用户
提问于 2015-04-23 23:05:13
回答 2查看 529关注 0票数 10

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

专门用于NSArray方法objectAtIndex:inRange:

这不管用。

代码语言:javascript
运行
复制
(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

我的代码在断点上有一个名为NSRange badRange的变量,并将其传递给工作人员。因此:

代码语言:javascript
运行
复制
(lldb) expr -o -- [items indexOfObject:item4 inRange:badRange]
0x7fffffffffffffff
(lldb) expr badRange
(NSRange) $1 = location=0, length=3

怎么一回事?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-29 14:26:03

在调试器中创建NSRange时,在OS项目中可以正常工作,但对于iOS项目则不然。它不能在iOS上工作的原因是,尽管基金会提供了声明结构的头文件,但它没有公开任何相应的符号。基本上,在iOS上,NSRange只是一个前向声明,我不知道实现的真正符号。

票数 4
EN

Stack Overflow用户

发布于 2017-05-25 03:49:15

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

代码语言:javascript
运行
复制
po [@"test words here" stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:1024 range:(NSRange){0,15}]

这也适用于:

代码语言:javascript
运行
复制
expr NSRange $tmpRange = (NSRange){0,15}
po [@"test words here" stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:1024 range:(NSRange)$tmpRange]

不确定这是什么时候修复的(或者它是否曾经修复过,因为第二个示例中的NSRange)会导致相同的错误),但它现在起作用了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29835886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档