Posted at

NSArray, NSDictionary, NSSetでの型指定

More than 3 years have passed since last update.

最近はSwiftに押され気味のObjective-Cですが、

いつのまにやら、

NSArray, NSDictionary, NSSetなどのコレクションクラスで値やキーの型が指定ができるようになってました。

型を指定して宣言しておくことで、Xcodeでのコード補完時に型の確認ができるので、ちょっと便利です!

そこで、NSDictionaryで前と後ろのどっちの型がkeyだかすぐに忘れる自分の備忘録も兼ねて、まとめてみました^^;


NSArray

NSArray<値の型>

例)

NSArray<NSString*>* ary = [[NSArray<NSString*> alloc] init];


NSDictionary

NSDictionary<キーの型, 値の型>

例)

NSDictionary<NSString*, NSNumber*>* dict = [[NSDictionary<NSString*, NSNumber*> alloc] init];


NSSet

NSSet<値の型>

例)

NSSet<NSString*>* set = [[NSSet<NSString*> alloc] init];


まぁ、C++のクラステンプレートみたいな感じですね。

(これらは、NSMutableArrayなどMutableが付いても同じように使えました。

注意点としては、コレクションクラスの基本はid型を入れる用途のクラスなので、int型やchar型、あとは、NSObjectを継承してないクラスなどは指定できないようです。

NSNumberやNSStringのポインタは可能。

自分は、最近発見して使い始めたトコだったけど・・・もしかして昔からあったのかなぁ・・・知らないだけで^^;

(あ、Swiftの方にもあるかどうかは、Unityやcocos2dxなど別のライブラリと連携する時にブリッジする一手間増えちゃうっていう個人的かつ身勝手な理由であまり使えていないので、わからんのです^^;