2011-10-26 11 views
0

NSMutableStringを取り込み、以下のように個々の文字を変更するインスタンスメソッドを作成しようとしています。 nameがプロパティに正しく設定されています。インスタンスメソッドのNSMutableString

mainのNSMutableStringオブジェクトでは、問題の同じメソッドが正常に動作しますが、インスタンスメソッドで動作するようにはできません。私は間違って何をしていますか?

-(void)changeName:(id)string{ 
    [self.name replaceCharactersInRange:NSMakeRange(0, 1) withString:@"x"]; 
} 
+3

'string'パラメータをまったく使用していないことに気づいていますか?そのパラメータの目的は何でしょうか? '-changeName:'の後に 'self.name'が変更されますか?メソッドが機能していない、つまり何をすべきか、そして結果は何であると思われますか? –

答えて

2

インスタンスメソッドで機能しない場合、NSMutableStringのポインタをreplaceCharactersInRangeに渡していない可能性があります。 Objective-Cのメソッドは、ポインタを渡さないとうまくいけないことに注意してください。

あなたのインスタンスメソッドでNSLogを使用して、修正しようとする前後の文字列を出力します。次に、可変文字列ポインタが決して設定されなかった理由を理解します。