NSMutableString修改

时间:2013-07-07 11:39:18

标签: objective-c nsmutablestring

我是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];
}

2 个答案:

答案 0 :(得分:1)

您只是使用指向实际字符串的指针。两种方法都使用该指针,因此它们访问内存中的同一对象。

答案 1 :(得分:0)

validateAccessCode:方法正在调用sender方法,可能是具有文本字段的UI对象。此方法在调用replaceCharachters:时更改字段中的文本,因此无需返回任何内容。