V2
에서 나를 혼란스럽게 만들었지 만, 아직 조금 궁금해서 V1
이 (가)하고 있습니다. V1
을 보면 지금은 라인이 가치에 의해 전달되고 있다고 생각합니다. (본질적으로 제가 가지고있는 것은 라인의 로컬 복사본입니다). 스캐너는 그 데이터를 그 로컬 복사본의 주소로 스캔하고, 메소드가 종료되고 외부 변수 라인이 여전히 nil 일 때 로컬 복사본이 파괴됩니다.메서드에 개체 전달?
V2
에서 줄의 주소를 전달하고 그 주소로 데이터를 스캔하는 중, 참조로 전달하는 것을 사용하고 있는데, 용어가 확실하지 않은 것입니까?
// V1
NSString *line = nil;
[self scanUsing:scanner into:line];
NSLog(@"AFTER_: %@", line);
- (void)scanUsing:(NSScanner *)scanner into:(NSString *)line {
[scanner scanUpToString:@"\n" intoString:&line];
NSLog(@"INSIDE: %@", line);
}
.
// V2
NSString *line = nil;
[self scanUsing:scanner into:&line];
NSLog(@"AFTER_: %@", line);
- (void)scanUsing:(NSScanner *)scanner into:(NSString **)line {
[scanner scanUpToString:@"\n" intoString:line];
NSLog(@"INSIDE: %@", *line);
}
많은 감사. – fuzzygoat