Objective c 目标C:是否存在泄漏?

Objective c 目标C:是否存在泄漏?,objective-c,memory-management,automatic-ref-counting,Objective C,Memory Management,Automatic Ref Counting,当前设置-ivar 设置-方法的参数 以下是通常执行多次的方法。ARC已启用 currentSettings = [[NSMutableDictionary alloc]init]; currentSettings = settings; 此代码中是否有错误?无泄漏,只有在未启用ARC时才会泄漏(因为这样会丢失指向已创建的NSMutableDictionary)的指针)。但由于启用了ARC,您只是多余地分配和取消分配字典,因为设置新字典时,currentSettings实例变量将释放其以前的值

当前设置
-ivar

设置
-方法的参数

以下是通常执行多次的方法。ARC已启用

currentSettings = [[NSMutableDictionary alloc]init];
currentSettings = settings;

此代码中是否有错误?

无泄漏,只有在未启用ARC时才会泄漏(因为这样会丢失指向已创建的
NSMutableDictionary
)的指针)。但由于启用了ARC,您只是多余地分配和取消分配字典,因为设置新字典时,
currentSettings
实例变量将释放其以前的值


总之,你不需要第一行。默认情况下,实例变量是
strong
,因此它将处理(保留)方法参数。

无泄漏,只有在未启用ARC时才会泄漏(因为这样会丢失指向已创建的
NSMutableDictionary
的指针)。但由于启用了ARC,您只是多余地分配和取消分配字典,因为设置新字典时,
currentSettings
实例变量将释放其以前的值



总之,你不需要第一行。默认情况下,实例变量是
strong
,因此它将处理(保留)方法参数。

您的第一行是创建一个新字典,当您将currentSettings指向settings时,它将被丢弃。启用ARC后,我认为它不会泄漏内存(空字典将被释放),但它也不会做任何事情。

您的第一行是创建一个新字典,当您将currentSettings指向settings时,它会被丢弃。启用ARC时,我认为它不会泄漏内存(空字典将被释放),但它也不会做任何事情。

使用ARC时,不会泄漏,但每次这两行运行时,您都会创建并立即丢弃一个字典。在MRR下它会泄漏。您应该在Xcode中运行“Analyze”,它会告诉您代码中是否有泄漏。供您参考,对于这段代码,使用ARC,您没有任何泄漏。在第一行和第二行之间,编译器将在第一行插入字典的一个版本。lemme guess——又是tutsplus教程?是的,别用那个。没有必要通过为指针分配一个新创建的空字典来“初始化指针”。使用ARC,没有泄漏,但是每次这两行运行时,您都会创建并立即丢弃一个字典。在MRR下它会泄漏。您应该在Xcode中运行“Analyze”,它会告诉您代码中是否有泄漏。供您参考,对于这段代码,使用ARC,您没有任何泄漏。在第一行和第二行之间,编译器将在第一行插入字典的一个版本。lemme guess——又是tutsplus教程?是的,别用那个。没有必要通过为指针分配一个新创建的空字典来“初始化指针”。实例变量上的一个小星号是强的-用弱声明的属性将合成同样是
\uu弱的IVAR,所以在处理弱属性和IVAR时要小心。@RichardJ.RossIII没错。我假设这个ivar没有对应的属性,因为OP没有提到有。@H2CO3没关系-没有属性,只有ivar。感谢您对强实例变量的良好解释—用弱声明的属性将合成同样是
\uu弱的IVAR,因此在处理弱属性和IVAR时要小心。@RichardJ.RossIII没错。我假设这个ivar没有对应的属性,因为OP没有提到有。@H2CO3没关系-没有属性,只有ivar。谢谢你的解释这和H2CO3的答案有什么不同?不是的,真的,我开始打字的时候他的答案不在那里。所以你一定是个打字慢的人,他快了将近3分钟。事实上,相当慢。我还开始写一段关于使用
setDictionary:
复制字典内容的文章,但我认为这与问题无关。这与H2CO3答案有什么不同?事实上,当我开始打字时,他的答案不在那里。所以你一定是个打字慢的人,他快了近3分钟。相当慢,事实上,事实上。我还开始写一段关于使用
setDictionary:
复制字典内容的文章,但我认为这与问题无关。