Sir*_*tty 1 cocoa memory-management nsdictionary
[我已经阅读了Cocoa内存管理规则,但仍然希望确定,并想知道这是否是一个好的形式.]
我的班级有一个可变字典ivar:
NSMutableDictionary *m_Dict;
...
m_Dict = [NSMutableDictionary dictionaryWithCapacity:10];
[m_Dict retain];
Run Code Online (Sandbox Code Playgroud)
在某些时候,我会在字典中添加一个可变数组:
NSMutableArray *array = [NSMutableArray arrayWithCapacity:100];
[m_Dict setObject:array forKey: @"myArray"];
Run Code Online (Sandbox Code Playgroud)
此时,我相信数组对象已被字典保留.因此,在将对象添加到字典之前,我不会保留该对象.它是否正确?
稍后,我将访问该数组,以供阅读:
NSMutableArray *array = [m_Dict objectForKey: @"myArray"];
Run Code Online (Sandbox Code Playgroud)
Q1.objectForKey返回了什么?它是指向字典中保存的对象的指针吗?或指向对象的COPY的指针?(我假设只返回指向现有对象的指针.)
Q2.这里发生了什么,记忆管理明智吗?我假设'array'指向一个仍然保留的对象(由拥有的字典对象),并且我不必保留该对象来使用它.正确?
谢谢.
Q1)返回与之前添加的Objective-C数组相同的指针.没有复制.
Q2)正确.数组中的所有项都归数组所有.如果某些东西拥有其他东西,它会保留对它的保留计数.
从数组中删除对象时,保留计数减少,对象(可能)被释放.
归档时间: |
|
查看次数: |
2476 次 |
最近记录: |