私はJavaプログラマーであり、Obj-Cから始めています。Javaでは、次のように、決定されたタイプのクラスで可変配列を作成できます。
ArrayList<MyClass> list;
Obj-cでは、NSMutableArrayは知っていますが、クラスのタイプを決定する方法がわかりません。
これを行うことができるNSMutableArrayなしでそれまたは他のクラスでこれを作る方法がありますか?
どうもありがとう。
私はJavaプログラマーであり、Obj-Cから始めています。Javaでは、次のように、決定されたタイプのクラスで可変配列を作成できます。
ArrayList<MyClass> list;
Obj-cでは、NSMutableArrayは知っていますが、クラスのタイプを決定する方法がわかりません。
これを行うことができるNSMutableArrayなしでそれまたは他のクラスでこれを作る方法がありますか?
どうもありがとう。
いいえ、Cocoa/Objective-Cはこのような型付きコレクションを提供していません。コレクション内のすべてのオブジェクトは継承する必要がありますNSObject
(基本的にはプリミティブと構造体以外のすべてです)が、それを超えて、配列で何が起こっているかを理解/管理するのはあなた次第です。内のオブジェクトは、NSMutableArray
そのインターフェイスでジェネリック型で表されますid
。
デザインの観点から、Cocoaのコレクションには通常、同種のタイプのオブジェクトが含まれています。配列の名前は、(Javaの場合と同様に)配列内にあるものを示すためによく使用されます。たとえばbookTitlesArray
、または単にbookTitles
(つまり文字列)。さらに、抽象化の観点から、軽量クラスを使用してrawを「ラップ」NSMutableArray
し、インターフェースで型チェックを実施することがあります。BookTitleList
のように、add、lookup、removeメソッドのサブセットを提供し、検証などの後にそれらを内部配列に渡す新しいクラスが呼び出されました。ただし、YMMVはニーズによって異なります。
Objective Cには型パラメーターはありませんが、メソッドを呼び出すためにダウンキャストする必要がないため、Javaよりも煩わしさがはるかに少なくなります。Objective Cは、この点でJavaScriptに似ています。