私は私を混乱させていた何かを修正しました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);
}