以下行是否泄漏了此对象[[NSMutableDictionary alloc] init]
?
[myCollection setObject:[[NSMutableDictionary alloc] init] forKey:@"myDictionary"];
我认为它没有,因为对象永远不会被分配给引用...但同时我质疑它,因为我确实分配了对象......
以下工作是否可以替代?
[myCollection setObject:[NSMutableDictionary dictionary] forKey:@"myDictionary"];
答案 0 :(得分:2)
第一个会泄漏,第二个不会泄漏。
将对象引用分配给变量根本不会影响对象的所有权。您调用alloc
,这意味着您是所有者,无论您是否捕获该调用的结果。如果你不这样做,你就泄露了。
第二个选项([NSMutableDictionary dictionary]
)不会泄漏,因为+dictionary
会返回一个非拥有(自动释放)的对象。
简而言之,你的直觉是正确的。恭喜!许多在这里提出记忆管理问题的人通常会弄错。 :)