我糾正了一些在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