私は Objective-C での逆参照を理解しようとしており、以下の 2 つの方法を書きました。
-(void)alterStringModelOne:(NSMutableString**)string{
NSMutableString *str = [NSMutableString stringWithString:@"New string by string = &str"];
string = &str; //Didn't work
}
-(void)alterStringModelTwo:(NSMutableString**)string{
NSMutableString *str = [NSMutableString stringWithString:@"New string by *string = str"];
*string = str; //It works
}
上記では、ModelOne は機能しませんでしたが、ModelTwo は機能します。これら2つのステートメントはどのように異なりますか?
編集:アドレスとタイプの追跡
myStr =タイプのb260 * CFString
---> メソッド モデル 1 に入る
string = d9c4 型 ** NSMutableString //パラメータ
str = f750 of * CFString //str 作成後
string = d97c of type ** NSMutableString //代入後: string = &str;
--> メソッドが戻る
myStr = b260 * CFString
--> メソッド モデル 2 に入る
string = d9c4 型 ** NSMutableString //パラメータ
str = 0bc0 of * CFString //str 作成後
string = 0bc0 of type * CFString //代入後: *string = str;
--> 葉の方法
myStr =タイプの0bc0 * CFString