2016-12-28 10 views
2

この2つの違いを知りたいだけですが、これで何も見つかりませんでした。NSMutableDictionary * dictionary = @ {}。mutableCopy VS NSMutableDictionary * dictionary = [NSMutableDictonary new]

NSMutableDictionary* dictionary = @{}.mutableCopy 

VS

+2

最初のインスタンスは 'NSDictionary'インスタンスを作成し、それに' mutableCopy'メソッドを送り、 'NSMutableDictionary'インスタンスを生成します。 2番目のメソッドは、 'NSMutableDictionary'インスタンスを直接作成します。 – KudoCC

+1

@KudoCC '@ {}'は新しい 'NSDictionary'インスタンスを構築せず、シングルトンを再利用します。しかし、はい、第2のバージョンはより直接的であり、わずかに速く(読みにくいほど)速いです。 –

+0

@ItaiFerberはい、あなたは正しく、ただテストされています。 – KudoCC

答えて

3
NSMutableDictionary * dictionary = [NSMutableDictonary new] 

は、最初のものはNSDictionaryインスタンスを作成し、NSMutableDictionaryインスタンスを得、これにmutableCopy方法を送ります。

2番目のインスタンスは、NSMutableDictionaryインスタンスを直接作成します。私は@Itaiファーバーは、上述したような方法により、第二1 :)

を好む:

を{} @それはシングルトンを再利用し、新しいNSDictionaryのインスタンスを作成しません。

これは実装の詳細ですが、それは正しいです、あなたは以下のコードを使用してテストすることができます。

NSLog(@"%p, %p", @{}, @{}); 

それは同じアドレスを表示します。