我纠正了一些在V2
中令我困惑的东西,但我仍然对V1
正在做什么感到好奇。看看V1
现在我正确地认为该行正在被值传递(所以基本上我所拥有的是本地副本)。然后扫描程序将其数据扫描到本地副本的地址中,当方法退出并且外部变量行仍然为零时,本地副本将被销毁?将对象传递给方法?
在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