17

たとえば、 を使用してキーと値のペアの作成を開始したいとしますNSMutableDictionary。次に、容量が指定されていない空の可変辞書を作成するためのオプションが少なくとも 3 つあるようです。

NSMutableDictionary *mutDict = [[NSMutableDictionary alloc] init]; // 1
NSMutableDictionary *mutDict = [NSMutableDictionary new];          // 2
NSMutableDictionary *mutDict = [NSMutableDictionary dictionary];   // 3

今、私が理解しているように、[NSObject new]実質的に (正確ではないにしても) と同じです[[NSObject alloc] init]。したがって、基本的には、これら 2 つのオプションをマージすることができます。[NSDictionary dictionary]ただし、方法に関しては、ドキュメントには次のように記載されています。

辞書

空の辞書を作成して返します。

+ (id)dictionary

戻り値

新しい空の辞書。

討論

このメソッドは、主に の変更可能なサブクラスで使用するために宣言されています NSDictionary

一時オブジェクトが必要ない場合は、 と を使用して空の辞書を作成することもできalloc...ますinit

まず、このドキュメントに関していくつか質問があります。

まず、NSMutableDictionary の代わりに NSDictionary で宣言されているのはなぜですか?

第二に、このコンテキストでの「一時オブジェクト」とはどういう意味ですか?

要約すると、最初の 2 つと比較して、上記の 3 番目の選択肢に違いはありますか? オブジェクトの自動解放何か関係があるのでしょうか? それは、自動参照カウント (ARC) のコンテキストでも問題になりますか?

この質問は、[NSData data]や など、他のクラスにも当てはまることに注意してください[NSArray array]

XCode 4.6.1 と iOS 6.1 を使用しています。ARCを使用して、最近どれを使用しても問題ありませんか? おそらく、パフォーマンスに関するいくつかの観点からですか?

これについて明確な情報をありがとう!

4

2 に答える 2