说我有:
NSDictionary *stuff; // {"1" => "hi", "2" => "bye"}
NSArray *array = [stuff allKeys];
Run Code Online (Sandbox Code Playgroud)
allKeys 复制了东西的密钥,因此数组现在负责发布这些信息.
后来,我什么时候想
我不能做:
array = [newStuff allKeys];
Run Code Online (Sandbox Code Playgroud)
因为它只会重新分配指针并孤立原始数组.我必须先删除对象
[array removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
想知道我的理解是否正确?谢谢!
不完全的.
NSArray *array = [stuff allKeys];
Run Code Online (Sandbox Code Playgroud)
这为您提供了一个您不拥有的数组.从技术上讲,它是否是副本不是你的问题.由于访问器不以单词"alloc"或"new"开头,或包含单词"copy",因此您不拥有返回值,这意味着您不需要释放它.(但如果你想保留它,你需要保留它.)
如果你以后这样做:
array = [newStuff allKeys];
Run Code Online (Sandbox Code Playgroud)
没关系.正如你所知,它会踩踏原始引用,但由于你还没有拥有该引用,所以可以放手.当然,除非您保留,否则这个新参考也不属于您.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |