2012-04-22 3 views
4

私はNSDictionaryのコピー

NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init]; 
id dict = [myDictionary copy]; 

を持っていますが、今dict普通のNSDictionaryのですか?それとも、NSMutableDictionaryのコピーですか?

また、変更可能から変更不可能になる方法はありますか?

答えて

16

ここには2つの方法があります。 -copyおよび-mutableCopy

クラスに区別がある場合は、 -copyは常に不変のコピーを作成します。 -mutableCopyは常に可変コピーを作成します。

クラスに区別がない場合は、 -copyは常に真のコピーを作成します。

したがって、dictは辞書に含まれるオブジェクトを含むNSDictionaryになりました。

+1

マイナーな修正: 'copy'は_deep copy_を作成しないので、コピーされた辞書のオブジェクトはコピーではなく元のものと同じになります。 – omz

+0

@omz:辞書の内容が 'NSCopying'を採用している場合にも当てはまりますか? –

+0

Cocoaコレクションクラスは常に '-copy'メソッドのために浅いコピーを行います。 –

関連する問題