Objective-C:有泄漏吗?

时间:2013-06-11 21:05:48

标签: objective-c memory-management automatic-ref-counting

currentSettings - ivar

settings - 方法的参数

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

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

这段代码有什么问题吗?

2 个答案:

答案 0 :(得分:3)

没有泄漏,如果没有启用ARC,这只会泄漏(因为那时你会松开指向创建的NSMutableDictionary的指针)。但是因为ARC已启用,所以您只是简单地分配和释放字典,因为currentSettings实例变量将在设置新值时释放其先前的值。

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

答案 1 :(得分:0)

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