3

Cocoa のベテランの皆さんにお聞きしたいのですが、次のような場合に可変オブジェクトと不変オブジェクトの使用でパフォーマンスに違いはありますか?

  • NSStringstringByAppendingString:NSMutableStringの_appendString:
  • NSArrayarrayByAddingObject:NSMutableArrayの_addObject:
  • ...

ありがとう、幸せなコーディング!

4

1 に答える 1

1

この質問に答えるのは難しいです: NSArrayandNSStringは実際の実装ではなく、クラスクラスターであり、NSMutableArrayandNSMutableStringです。その下にある真の実装を特定できないため、パフォーマンスを比較するのは困難です。それに対する明確な答えはおそらく見つからないでしょう。

しかし、私が推測するのは、変更を含む新しいオブジェクトを作成するstringByAppendingStringことです。つまり、現在のアイテムをメモリ内の新しい場所にコピーし、可能な場合はコピーを防ぐように構築されているため、パフォーマンスが向上するはずです (メモリを再コピーする可能性があるため、実際には正しくありません)要素が追加されたときですが、毎回ではありません)。arrayByAddingObjectNSMutableArrayNSMutableStringNSMutableArray

これについては、CoreFoundation のコーダーを信頼するべきだと思います。オブジェクトを変更したくありませんか? 変更可能なものを使用してください。

于 2012-08-22T09:58:55.337 に答える