Objective c 在作业中何时使用和何时不使用(可变)副本(目标C)
我对目标C不熟悉,我不知道在NS(可变)词典中,我必须使用Objective c 在作业中何时使用和何时不使用(可变)副本(目标C),objective-c,nsmutabledictionary,Objective C,Nsmutabledictionary,我对目标C不熟悉,我不知道在NS(可变)词典中,我必须使用(可变)副本来完成这样的作业: dict[@“backup”]=dict[@“myList”] 通过调试,我发现任务必须这样完成: dict[@“backup”]=[dict[@“myList”]可变表复制] 现在的问题是:我如何知道我必须使用副本(vs引用)以及哪种类型的对象 谢谢大家! 这取决于指定元素的使用。如果要更改它的内容,它必须是可变的。如果您只是在阅读它,请不要使它可变。只是它取决于指定元素的使用。如果要更改它的内容,它必须
(可变)副本
来完成这样的作业:
dict[@“backup”]=dict[@“myList”]代码>
通过调试,我发现任务必须这样完成:
dict[@“backup”]=[dict[@“myList”]可变表复制]代码>
现在的问题是:我如何知道我必须使用副本(vs引用)以及哪种类型的对象
谢谢大家! 这取决于指定元素的使用。如果要更改它的内容,它必须是可变的。如果您只是在阅读它,请不要使它可变。只是它取决于指定元素的使用。如果要更改它的内容,它必须是可变的。如果你只是在读它,不要让它变为易变的。没有什么你必须做的
字典包含键值对。例如,为了使代码正常工作,dict包含一些对象作为键“myList”的值。不知道那是什么东西。你可以做三个不同的作业,每个作业都是完全有效的,但做的事情不同:
dict [@"backup"] = dict [@"myList"];
存储密钥备份下的密钥myList下已经存在的相同对象。如果对象是可变的,并且有人修改了该对象,则每个键下的对象都会被修改,因为它是同一个对象
dict [@"backup"] = [dict [@"myList"] copy];
“复制”很有趣。通常它会创建对象的副本,因此您有两个对象,一个旧对象和一个新对象。如果原始文件是可变的,那么副本将是不可变的。但是,如果原始对象是不可变的,那么操作系统会假定复制没有意义,因此复制将提供原始对象。无论如何,dict[@“backup”]将是一个不可变的对象,不受dict[@“myList”]修改的影响,因为它不是同一个对象,或者因为dict[@“myList”]无法修改
dict [@"backup"] = [dict [@"myList"] mutableCopy];
这将生成原始文件的可变副本并将其存储。这绝对不是同一个对象。它可以被修改
dict [@"backup"] = [dict [@"myList"] mutableCopy];
这真的取决于你想要实现什么。这里没有对错之分 没有什么你必须做的
字典包含键值对。例如,为了使代码正常工作,dict包含一些对象作为键“myList”的值。不知道那是什么东西。你可以做三个不同的作业,每个作业都是完全有效的,但做的事情不同:
dict [@"backup"] = dict [@"myList"];
存储密钥备份下的密钥myList下已经存在的相同对象。如果对象是可变的,并且有人修改了该对象,则每个键下的对象都会被修改,因为它是同一个对象
dict [@"backup"] = [dict [@"myList"] copy];
“复制”很有趣。通常它会创建对象的副本,因此您有两个对象,一个旧对象和一个新对象。如果原始文件是可变的,那么副本将是不可变的。但是,如果原始对象是不可变的,那么操作系统会假定复制没有意义,因此复制将提供原始对象。无论如何,dict[@“backup”]将是一个不可变的对象,不受dict[@“myList”]修改的影响,因为它不是同一个对象,或者因为dict[@“myList”]无法修改
dict [@"backup"] = [dict [@"myList"] mutableCopy];
这将生成原始文件的可变副本并将其存储。这绝对不是同一个对象。它可以被修改
dict [@"backup"] = [dict [@"myList"] mutableCopy];
这真的取决于你想要实现什么。这里没有对错之分 这件事没有什么“必须”的。如果第一句话符合你的意图/期望,那么它就非常好。如果您想要一个单独的对象,您只需要制作一个副本。如果您需要一个独立的对象是可变的,那么您只需要创建一个可变的副本。如果第一句话符合你的意图/期望,那么它就非常好。如果您想要一个单独的对象,您只需要制作一个副本。如果你需要一个独立的对象是可变的,你只需要制作一个可变的副本。非常感谢!来自PHP,赋值实际上是复制,所以我必须习惯显式复制值。非常感谢!来自PHP,赋值实际上是复制,所以我必须习惯显式复制值。