gpt4 book ai didi

Cocoa - NSDictionary objectForKey - 内存管理澄清

转载 作者:行者123 更新时间:2023-12-03 16:53:17 25 4
gpt4 key购买 nike

[我已经阅读了 Cocoa 内存管理规则,但仍然想确定,并且想知道这是否是好的形式。]

我的类有一个可变字典 ivar:

NSMutableDictionary *m_Dict;

...

m_Dict = [NSMutableDictionary dictionaryWithCapacity:10];
[m_Dict retain];

有时我会向字典添加一个可变数组:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:100];
[m_Dict setObject:array forKey: @"myArray"];

此时,我相信数组对象已被字典保留。因此,在将对象添加到字典之前,我不保留该对象。这是正确的吗?

稍后,我将访问该数组以进行读取:

NSMutableArray *array = [m_Dict objectForKey: @"myArray"];

Q1. objectForKey 返回什么?它是指向字典中保存的对象的指针吗?或者指向对象副本的指针? (我假设只是返回一个指向现有对象的指针。)

第二季度。从内存管理角度来看,这里发生了什么?我假设“array”指向一个仍然保留的对象(由拥有的字典对象),并且我不必保留该对象即可使用它。对吗?

谢谢。

最佳答案

Q1) 返回的指针与您之前添加的 Objective-C 数组相同。没有复制。

问题2)正确。数组中的所有项目都属于该数组。如果某个东西拥有其他东西,它会对其保留保留计数。

当您从数组中删除对象时,保留计数会减少,并且该对象(可能)会被释放。

关于Cocoa - NSDictionary objectForKey - 内存管理澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com