3

通常、初期化NSMutableArrayする場合は次を使用します。

NSMutableArray *mArr = [[NSMutableArray alloc] initWithObjects: @"one", @"two", @"three", nil];

しかし、次のような構文を使用するのは正しいですか:

NSMutableArray *mArr = @[@"one", @"two", @"three"].mutableCopy;

数ナノ秒長く機能することを理解しています。しかし、私は 2 番目の方法の方が読みやすいと考えており、それらのナノ秒を犠牲にする準備ができています。

このような構造を使用しても大丈夫ですか?ARC は、変更可能なコピーを取得するために使用している未使用の NSArray を消去しますか? お漏らししませんか?

4

3 に答える 3

4

しかし、2番目の方法の方が読みやすいと思います

個人的には、プロパティであるかのように使用しているため、より混乱し、さらに混乱してmutableCopyいます。正しい、正しい、しかし完全に誤解を招く私見。

継承を利用しないのはなぜですか?

NSMutableArray *ma = [NSMutableArray arrayWithObjects:@"foo", @"bar", nil];

デフォルトで変更可能なコレクションの方が役立つ場合があります。* はぁ *

于 2013-10-04T17:01:51.060 に答える
3

はい、(あなたが示したように) パフォーマンス コストを支払う意思がある場合は、変更可能な配列をそのように初期化しても問題ありません。ARC はすべてを適切にクリーンアップします。漏れません。

于 2013-10-04T16:57:32.350 に答える
0

通常はarrayWithArrayを使用します。

NSMutableArray *foo = [NSMutableArray arrayWithArray:@[@"one", @"two", @"three"]];
于 2013-10-04T16:56:56.947 に答える