私はNSArrayを使用するとき、私は将来、ある程度時間を制限するかもしれないと感じます。変更可能な「複雑な」ものではなく、この「原始的な」ものを好む良い理由はありますか?NSMutableArrayの代わりにNSArrayを好む理由がありますか?
1
A
答えて
6
コード内に変更不可能な構造体を使用することは、あまり制約がありません。後で変更する必要がある場合は、変更可能なものを使用するように変更する必要があります。あなたがそれを外部インターフェースの心に持っていれば、それはもっと制約になるかもしれません。非可変の主な利点は、スレッドの安全性を得ることができ、コードの概念化がより簡単であることです。このため、我々はconst
という制約を持っています。データを変更する必要がない場合は、そのように前向きに言う方がよいでしょう。
2
理由の1つは、YAGNIの原則です。可変配列が必要ない場合は、使用しないでください。したがって、あなたのコードは、理解しやすく、テストし、維持しやすくなります。
コードはコンパイラによって処理されるだけでなく、コーダやテスタによっても読み取られることに注意してください。 NSArray
の代わりにNSMutableArray
を使用すると、その意味があります。彼らにあなたの意図についての虚偽の情報を与えることは逆効果かもしれません。
2
Mssrs INFORMATIONとmouviciel NSArrayの回答に加えて、NSMutableArrayよりも高速です。これは、すべてのstati/mutableコレクションに当てはまります。
関連する問題
- 1. ポリマーがウェブパックの代わりにバアを好む理由
- 2. ArrayListsよりもArrayを好む理由はありますか?
- 3. NSArrayとNSMutableArrayの互換性に問題がありますか?
- 4. #+ CATEGORYよりPROFERTIESを好む理由
- 5. XMLの代わりにSGMLを使用する理由はありますか?
- 6. trueの代わりに!0を使用する理由はありますか?
- 7. {}の代わりにdict()を書く理由はありますか?
- 8. マークアップのための関数ベースのパラダイムにテンプレートベースのパラダイムを好む理由がありますか?
- 9. Facebook PHP-SDKが$ _SESSIONの代わりに$ _COOKIEを使用する理由はありますか?
- 10. parseIntの代わりにビット演算子を使用しないのが良い理由はありますか?
- 11. Sugar ORMのcount()メソッドがStringの代わりにString []パラメータを取る理由はありますか?
- 12. NSUserDefaultsは、これは私がNSArrayの保存方法です代わりにNSArray
- 13. 追加する代わりに書き込むasp.netコンポーネントがありますか
- 14. ui:compositionの代わりにFaceletsルートとしてhtmlを使用する理由はありますか?
- 15. C++ 1zでtry_emplace()の代わりにstd :: map :: emplace()を使用する理由はありますか?
- 16. タイプクラスの代わりにf限定ポリモフィズムを使用する理由はありますか?
- 17. Pd拡張の代わりにバニラ純粋データを使用する理由はありますか?
- 18. リスト/ディクショナリの更新はありますが、理由はわかりません
- 19. existnigアプリの中で基本的なWebviewの代わりにCordovaを使う理由はありますか?
- 20. Date []の代わりにlong []を使用する理由
- 21. IISの代わりにWaWebHostでWebRoleを実行する理由
- 22. guava:コンストラクタの代わりにメソッドcreate()を使用する理由
- 23. QAの代わりにmochaを使用する理由
- 24. 1の代わりに "undefined"を返す理由
- 25. queue.First()/ Last()の代わりにqueue.Peek()を使用する理由
- 26. IOErrorEvent.IO_ERRORの代わりにEvent.OPENをディスパッチする理由
- 27. Stringの代わりにchar []を使用する理由は?
- 28. SpriteKitの代わりにCoreGraphicsを使用する理由は?
- 29. アサートの代わりにQ_ASSERTを使用する理由
- 30. シェルスクリプト - エコーの代わりにbin/echoを使用する理由?
正確です。それを変更不可能にすると、インタフェース契約が強制されます。 –
また、NSMutableArrayはNSArrayよりわずかに遅いです。速度が必要な場合は、NSArrayまたは手動で管理されたC配列を使用してください。 – rpetrich