我已经纠正了一些让我感到困惑的事情,V2
但我仍然对正在做什么感到有点好奇V1
。现在看看V1
我是否认为该行是按值传递的(所以基本上我所拥有的是行的本地副本)。Scanner 然后将其数据扫描到该本地副本的地址中,当方法退出并且外部变量 line 仍然为 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);
}