문자열을 뒤집기 위해이 코드를 작성 중이며 NSRange의 매개 변수가 작동하지 않는 이유가 필요합니다.NSA 범위가 잘못되었습니다.
CODE : 모든 코드의
for (int i = 0; i <= oldString.length; i++) {
NSRange range = NSMakeRange(i, oldString.length);
}
문자열을 뒤집기 위해이 코드를 작성 중이며 NSRange의 매개 변수가 작동하지 않는 이유가 필요합니다.NSA 범위가 잘못되었습니다.
CODE : 모든 코드의
for (int i = 0; i <= oldString.length; i++) {
NSRange range = NSMakeRange(i, oldString.length);
}
먼저 작동하는 경우도, 아무것도하지 않는, 충분하지 않습니다.
또한 NSRange
은 location
및 length
의 두 매개 변수를 사용하므로 앱이 다운됩니다. location
는> 0이고, 길이로 설정하면 oldString.length
그래서 location
까지, 그렇지 않으면 0이 length
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];
}
귀하의 코드는 이것이다 : 마테오가 당신에게 것처럼
for (int i = 0; i <= oldString.length; i++) {
NSRange range = NSMakeRange(i, oldString.length);
}
지금 우선, 그것은 아무런 영향을 미치지 않습니다. 그것이하는 일은 범위를 사용하지 않고 범위를 만드는 것입니다.
하지만 그 범위를 살펴 보겠습니다. 연속적인 값 range
만 고려하십시오. 자신의 코드를 연구하십시오. 우리의 문자열 oldString
이 12345
이라고 가정합니다. 그 다음 길이는 5입니다. 그런 다음 범위는 연속적으로이 문자열을 덮습니다.
12345
2345[and one too far]
345[and two too far]
45[and three too far]
5[and four too far]
이들은 매우 어리석은 범위입니다!
OP의 질문에 완전히 답하지 않았습니다. 당신은 당신의 대답을 확장하여 NSMakeRange가 왜 작동 하는지를 설명 할 수 있습니다. –
나는 걱정하지 않고있다. –