13

重複の可能性:
NSMutableDictionaryのリテラル作成は、クラスヘルパーメソッドよりも効率が悪いですか?

ObjectiveCリテラルを紹介するWWDCビデオによると、NSMutableArraysは次のように初期化できます。

[NSMutableArray arrayWithArray:@[]];

しかし、このようにするとどうなるでしょうか。

[@[] mutableCopy];

1つは配列を初期化しており、もう1つは浅いコピーを提供しているだけです。したがって、メモリ管理は異なります。しかし、ARCを使用している場合、後者を使用することの欠点は何ですか?もっと高いですか?mutableCopyARCはおそらく両方を異なる方法で処理しますが、使用が「悪い」かどうか疑問に思っています。

4

1 に答える 1

6

前者の場合、現在の自動解放プールに2つのオブジェクトが追加されます。NSArrayリテラルと、そこから作成しているNSMutableArrayです。後者の場合、リテラルNSArrayは自動解放プールに追加されますが、そこからコピーされたNSMutableArrayは追加されません。したがって、最初のケースはパフォーマンスの面で少し悪く、自動解放プールをドレインするには(たとえば、実行ループサイクルの最後に)両方のオブジェクトを連続して解放する必要がありますが、2番目のケースでは、コピーは自動リリースされたリテラル。実際には、時差はごくわずかです。

于 2012-09-28T17:09:25.527 に答える