2

temporaryDictionary此语句执行后的引用计数是多少:

temporaryDictionary = [NSMutableDictionary dictionary];

我们知道if的引用计数temporaryDictionary是这样初始化的:1temporaryDictionary

temporaryDictionary = [[NSMutableDictionary alloc] init];

谢谢 :D

4

3 回答 3

1

temporaryDictionary 是在auotorelese pool,所以retain count可以1在某个时间和0另一个时间点..

是的,它从不建议依赖retainCount财产。

于 2013-06-13T06:58:26.077 回答
1

在这两个语句中,引用计数都是 1(但不要指望它:))并且使用 ARC 两个语句都会产生相同的结果。

如果在第一个语句中未启用 ARC,则字典将为您自动发布,而在第二个语句中您负责发布。

正如@H2CO3 和 Ishank 暗示的那样,您不想将代码基于对象的引用计数,因为它可能会被您不知道的内部实现更改。

于 2013-06-13T06:58:42.480 回答
1
temporaryDictionary = [NSMutableDictionary dictionary];

处于自动释放模式,无需手动释放。

temporaryDictionary = [[NSMutableDictionary alloc] init];

你需要小心,在你需要发送的块或dealloc(无论哪个适用)中release

在这两种情况下,保留计数都将增加 1,因为保留了值。

*现在您有了自动引用计数,因此无需担心保留计数和手动释放它的开销。

于 2013-06-13T07:22:45.323 回答