2

NSString类似的方法-substringWithRange:-rangeOfString:options:range:声明:

重要提示:如果 aRange 的任何部分超出字符串的末尾,则引发 NSRangeException。

在我看来,范围 (string.length, 0)超出了字符串的末尾。但是,[string substringWithRange:NSMakeRange(string.length, 0)]不会引发NSRangeException而是返回一个空字符串。所以我不确定 (string.length, 0) 是否是有效范围。

相比之下,两者[string substringWithRange:NSMakeRange(string.length + 1, 0)]都会[string substringWithRange:NSMakeRange(string.length, 1)]引发 NSRangeException。但是它们很明显超出了结尾,而 (string.length, 0) 似乎是一个临界点。

4

2 回答 2

5

这可能是语义问题,但我会说 (length, 0)位于字符串的末尾,而不是超出它。当然 (length, 1) 会超出结尾。

于 2012-10-23T21:56:29.030 回答
2

0如果光标的位置类似于文本字段或文本视图,您可以将范围内的长度(在字符串的上下文中)视为光标的位置。因此范围(string.length, 0)相当于将文本光标位置设置在字符串的最后。

于 2012-10-23T22:14:23.030 回答