【发布时间】:2014-06-27 18:22:47
【问题描述】:
来自苹果的documentation:
返回值 描述 range1 和 range2——即一个包含两个索引的范围 范围。
讨论如果返回范围的长度字段为0,那么这两个 范围不相交,并且位置字段的值为 未定义。
好的,假设我有两个范围:
(lldb) p rangeOne
(NSRange) $3 = location=11, length=4
(lldb) p rangeTwo
(NSRange) $4 = location=14, length=0
我计算交点:
NSRange intersection = NSIntersectionRange(rangeOne, rangeTwo);
结果是:
(lldb) p intersection
(NSRange) $5 = location=14, length=0
我该怎么办?长度为零,所以位置未定义?但在这种情况下,结果是我所期望的;我可以相信吗?计算一个范围的长度为零的范围的交集是否无效?
【问题讨论】:
-
在我看来,零长度的范围无论如何都是没有意义的,但是如果您在这种情况下想要“交集”并且不信任 NSIntersectionRange 那么为什么不自己编写代码。这是一个相当简单的算法,如果你想清楚的话。
-
好吧,我正在处理文本,并且经常选择的范围为零,因为插入点只是在移动,我没有选择。我想知道插入点是否在特定范围内。由于他们决定将 NSRange 用于所有这些东西,我原以为会出现这种情况。我确实根据自己的需要编写了自己的代码,但我想了解我在这里不了解的内容。
-
rangeTwo是否定义了索引?如果是这样,那么该索引显然在rangeOne内,并且它们应该相交。还是length为零的范围没有定义索引? -
对于插入,在我看来,您只想知道第二个点是否在第一个范围内。
标签: ios objective-c foundation nsrange