【问题标题】:NSMutuableString modificationNSMutableString 修改
【发布时间】:2013-07-07 11:39:17
【问题描述】:

我是 Objective-c 的新手,我不完全理解,为什么以下是有效的。 为什么我不必从私有方法返回字符串,以便在 validateAcessCode 方法中更改字符串? 是因为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];
}

【问题讨论】:

    标签: objective-c nsmutablestring


    【解决方案1】:

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

    【讨论】:

    • 好的,因为我来自 Java。如果我将一个字符串传递给一个方法并处理它,它只会在这个本地方法的范围内被改变。但这可能是因为如果我进行替换,java 会创建一个新的字符串引用...
    • 对。 Java String 等价于 Objective-C 的 NSString,它是不可变的。
    【解决方案2】:

    sender 正在调用validateAccessCode: 方法,这可能是一个具有文本字段的 UI 对象。该方法在调用replaceCharachters:时改变了字段中的文本,所以不需要返回任何内容。

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 2023-03-13
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多