0

私がviewDidLoadにあるとしましょう:

NSMutableArray *entries = [NSMutableArray array];
[self doSomethingWithArray:entries];

NSLog(@"%@", entries);

次に、方法で私が持っている:

- (void)doSomethingWithArray:(NSMutableArray *)entries
{
    // create some custom data here, lets say - Something *something...
    [entries addObject:something];
}

オブジェクト「何か」がプロパティまたはインスタンス変数に追加されず、nslog がクラス「何か」をログに記録するため、(メソッドが終了した後) エントリ (一番上にあるもの) にオブジェクト何かが含まれている可能性はありますか? そして doSomethingWithArray は「無効」であるため何も返しません。

私はこれに初めて遭遇しましたが、この外観の名前があるかどうかはわかりません。

いくつかの例でこれを 2 度目に見たことがありますが、どのように行われたのか本当にわかりません。

誰かがここで何が起こっているのかを少し説明できれば、とても感謝しています。

本当にありがとうございました。

4

2 に答える 2

1

*Objective-C インスタンスは参照によって渡されるため (ポインター構文でわかるように)。基本的に、配列のアドレスをdoSomethingWithArray:メソッドに渡します。そのメソッドでは、そのアドレスが参照する配列に何かを追加します。もちろん、メソッドが返されると、配列にはその新しいオブジェクトが含まれます。

于 2013-05-28T11:14:49.687 に答える
0

配列に何かオブジェクトを追加すると、配列は常にそれを保持します。つまり、Somethingオブジェクトのコピーを保持します。

したがって、NSLogは何かを出力します。

それが役立つことを願っています。

于 2013-05-28T11:18:04.463 に答える