我是Objective-c的新手,我完全不明白,为什么以下是有效的。
为什么我不必从private方法返回字符串,以便在validateAcessCode方法中更改字符串?
是因为NSMutuableString
在本地方法中工作,并且我传递给它的String的引用相同吗?这是什么原因?
- (void)replaceCharachters:(NSMutableString *)code {
[code replaceOccurrencesOfString: @"J" withString: @"a" options:0 range:NSMakeRange(0, [code length])];
[code replaceOccurrencesOfString: @"H" withString: @"b" options:0 range:NSMakeRange(0, [code length])];
[code replaceOccurrencesOfString: @"Y" withString: @"c" options:0 range:NSMakeRange(0, [code length])];
}
-(IBAction)validateAccessCode:(id)sender {
NSMutableString *code = [NSMutableString stringWithFormat:@"%@", accessCode.text];
[self replaceCharachters:code];
}
答案 0 :(得分:1)
您只是使用指向实际字符串的指针。两种方法都使用该指针,因此它们访问内存中的同一对象。
答案 1 :(得分:0)
validateAccessCode:
方法正在调用sender
方法,可能是具有文本字段的UI对象。此方法在调用replaceCharachters:
时更改字段中的文本,因此无需返回任何内容。