4
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
id dict = [myDictionary copy];
を持っていますが、今dict
普通のNSDictionary
のですか?それとも、NSMutableDictionary
のコピーですか?
また、変更可能から変更不可能になる方法はありますか?
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
id dict = [myDictionary copy];
を持っていますが、今dict
普通のNSDictionary
のですか?それとも、NSMutableDictionary
のコピーですか?
また、変更可能から変更不可能になる方法はありますか?
ここには2つの方法があります。 -copy
および-mutableCopy
。
クラスに区別がある場合は、 -copy
は常に不変のコピーを作成します。 -mutableCopy
は常に可変コピーを作成します。
クラスに区別がない場合は、 -copy
は常に真のコピーを作成します。
したがって、dictは辞書に含まれるオブジェクトを含むNSDictionaryになりました。
マイナーな修正: 'copy'は_deep copy_を作成しないので、コピーされた辞書のオブジェクトはコピーではなく元のものと同じになります。 – omz
@omz:辞書の内容が 'NSCopying'を採用している場合にも当てはまりますか? –
Cocoaコレクションクラスは常に '-copy'メソッドのために浅いコピーを行います。 –