该文档没有提到任何有关的信息。当一个旧物体被“移除”并且一个新物体进入它的位置时,那么旧物体会发生什么?我必须自己释放它吗?将-replaceObjectAtIndex:withObject:of NSMutableArray释放被新对象替换的旧对象吗?
2
A
回答
12
不,你不必自己释放它。
如果更换对象都有一个保留计数等于0
新对象时,您可能会得到一个错误被保留。旧对象被释放。
3
您不必释放它。
你没有执行ALLOC,复制或保留它,因此是不负责的记忆 - 这个文档是很清楚的。
我不希望Apple在SDK中记录每种方法的内存管理过程,除非它违反了他们已经设置的内存管理规则。如果文档没有说出任何内容,您可以假定默认规则适用。
1
的文件非常明确地指出在文件的顶部这一权利:
一样的NSArray,NSMutableArray里的情况下维持其内容的强引用。如果您不使用垃圾回收,则当您将一个对象添加到数组中时,该对象将收到一条保留消息。当一个对象从可变数组中移除时,它会收到一条释放消息。如果没有对该对象的进一步引用,这意味着该对象被解除分配。如果你的程序保持对这样一个对象的引用,那么引用将会失效,除非你在从数组中移除对象之前发送一个保留消息。
对于每种方法都没有重复记录这一点。
相关问题
- 1. 对象与NSMutableArray里的对象 - 对象如何释放
- 2. 添加新对象替换旧对象的内容 - VueJS Store
- 3. 替换,移动NSMutableArray中的对象
- 4. 替换nsmutablearray里面的一个对象
- 5. 的NSMutableArray并不需要替换对象
- 6. 替换2d嵌套NSMutableArray中的对象
- 7. 在NSMutableArray中替换对象索引
- 8. 当包含这些对象的NSMutableArray被释放时,如何释放组合对象?
- 9. 的释放对象
- 10. 将Segue放到一个NSMutableArray对象中
- 11. 对象的NSMutableArray
- 12. malloc错误 - 对于释放的对象的错误校验和 - 对象可能在被释放后被修改
- 13. 释放PyTuple对象
- 14. 对象被释放 - 为什么?哪里?
- 15. 非保留对象:何时被释放?
- 16. 这个对象为什么被释放?
- 17. 使用现有密钥向Session添加新对象是否替换旧对象?
- 18. Excel互操作对象不被释放
- 19. COM对象被释放非故意
- 20. 替换对象()
- 21. 释放对象还没有被释放的Objective-C的
- 22. 替换TObjectList中的一个对象并释放它(Delphi7)
- 23. 释放或自动释放的对象
- 24. 将新对象添加到NSMutableArray
- 25. 应该释放线程对象吗? C#
- 26. 完全释放CTFont对象吗?
- 27. 释放对象的内存
- 28. 将普通的旧对象转换为值对象
- 29. 释放的NSString对象
- 30. 释放对象的问题
如果retainCount> 1(当某些其他对象仍在保留它时),您可能不会立即得到该错误。 – rein 2009-05-25 12:59:13