NSRange参数不正确?

时间:2014-05-24 23:56:17

标签: ios nsrange

我正在构建此代码以反转字符串,而我所需要的只是NSRange的参数不起作用的原因。

CODE:

for (int i = 0;  i <= oldString.length; i++) {
    NSRange range = NSMakeRange(i, oldString.length); 
}

2 个答案:

答案 0 :(得分:0)

首先,你的代码是不够的,如果它有效,也什么都不做。

此外,您的应用崩溃是因为NSRange有2个参数:locationlength。 因此,在location为0之前,length可以是oldString.length(即所有字符串),否则,location为&gt; 0并设置为oldString.length长度,超出范围

在我正确使用NSMakeRange的地方使用此功能:

- (NSString *)reverseString:(NSString *)string {

    NSMutableString *newString = [NSMutableString new];

    for (int i = (int)[string length]-1; i >= 0; i--) {
        [newString appendString:[string substringWithRange:NSMakeRange(i, 1)]];
    }

    return [newString copy];
}

答案 1 :(得分:0)

您的代码是:

for (int i = 0;  i <= oldString.length; i++) {
    NSRange range = NSMakeRange(i, oldString.length); 
}

首先,正如Matteo告诉你的那样,它没有任何效果。它所做的只是在不使用它们的情况下制作一堆范围。

但是让我们来看看这些范围吧!只需考虑range的连续值。研究你自己的代码。假设我们的字符串oldString12345。然后它的长度为5.然后范围将连续覆盖这些字符串:

12345
2345[and one too far]
345[and two too far]
45[and three too far]
5[and four too far]

那些非常愚蠢的范围!