1

私は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];
}
4

2 に答える 2

1

実際の文字列へのポインターを操作しているだけです。どちらのメソッドもそのポインタを使用するため、メモリ内の同じオブジェクトにアクセスします。

于 2013-07-07T11:42:38.067 に答える
0

おそらくテキストフィールドを持つUIオブジェクトであるメソッドが呼び出されていますvalidateAccessCode:senderこのメソッドは、 を呼び出すときにフィールド内のテキストを変更しているreplaceCharachters:ため、何も返す必要はありません。

于 2013-07-07T11:41:55.623 に答える