NSMutuableString修改
问题描述:
我是新来的Objective-C,我不完全理解,为什么以下工作。 为什么我不必从私有方法返回字符串,以便在validateAcessCode方法中字符串将被更改? 是否因为NSMutuableString
在本地方法中使用与我传递给它的字符串相同的引用?这是原因吗?NSMutuableString修改
- (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];
}
答
你只是在使用一个指向实际字符串的指针。两种方法都使用该指针,以便他们访问内存中的同一个对象。
答
的validateAccessCode:
方法正在由sender
这大概是具有文本字段的UI对象调用。当它调用replaceCharachters:
时,此方法正在更改字段中的文本,因此不需要返回任何内容。
好吧,因为我来自Java。如果我将一个字符串传递给一个方法并对其进行处理,它只会在本地方法的范围内进行更改。但这可能是因为java创建一个新的字符串引用,如果我做一个替换... – krackmoe
正确。 Java字符串相当于Objective-C的NSString,它是不可变的。 –