나는 objective-c에 익숙하지 않으며 완전히 이해하지 못한다. 왜 다음이 작동하는지. validateAcessCode 메서드에서 문자열이 변경되도록 private 메서드에서 문자열을 반환해야하는 이유는 무엇입니까? NSMutuableString
이 전달 된 String과 동일한 참조를 사용하여 로컬 메서드에서 작동하기 때문입니까? 이것이 이유입니까?NSMutuableString 수정
- (void)replaceCharachters:(NSMutableString *)code {
[code replaceOccurrencesOfString: @"J" withString: @"a" options:0 range:NSMakeRange(0, [code length])];
[code replaceOccurrencesOfString: @"H" withString: @"b" options:0 range:NSMakeRange(0, [code length])];
[code replaceOccurrencesOfString: @"Y" withString: @"c" options:0 range:NSMakeRange(0, [code length])];
}
-(IBAction)validateAccessCode:(id)sender {
NSMutableString *code = [NSMutableString stringWithFormat:@"%@", accessCode.text];
[self replaceCharachters:code];
}
좋아, 내가 자바에서 왔기 때문에. 그리고 메서드에 String을 전달하고이 메서드를 사용하면이 로컬 메서드의 범위에서 변경됩니다. 하지만 이것은 자바를 대체 할 경우 새로운 문자열 참조를 생성하기 때문에 가능합니다. – krackmoe
오른쪽. Java String은 Objective-C의 NSString과 동일합니다. –