ios - 我需要自己释放添加到 NSDictionary 中的 NSNumbers 吗?

标签 ios memory-management

我正在创建一个将对象映射到整数的 NSDictionary,并且因为 NSDictionaries 除了对象之外不处理任何内容,所以我必须使用 [NSNumber numberWithInt:30] 或您拥有的东西将每个整数包装在 NSNumber 对象中。我不清楚是否需要释放我正在创建的所有 NSNumber 对象。我实际上并没有为它们分配空间,所以它们必须在自动释放池中,但是我可以确定 NSDictionary 对象正确地保留和释放它们吗?假设我正在设置

NSDictionary * myDict = [[NSDictionary alloc] initWithObjectsAndKeys: objectOne, [NSNumber numberWithInt: 30], nil];

当我完成它时,我会正确地释放它(因为我在我自己的代码中为其分配了空间)。

最佳答案

不,NSNumber 对象是自动释放的。

将它们添加到 NSDictionary 将导致将保留消息发送到您添加的每个 NSNumber 对象。

根据内存管理规则,你不拥有这些对象 - NSDictionary 以某种方式做到这一点 - 因此你不负责释放它们,NSDictionary 对象会这样做。

但是你拥有用 alloc & initWithObjectsAndKeys: 创建的 NSDictionary。因此,您需要注意管理 myDict 对象的内存。

关于ios - 我需要自己释放添加到 NSDictionary 中的 NSNumbers 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046756/

相关文章:

ios - UITableView 不显示内容,除非滚动或触摸单元格

android - 有人知道让 AT&T 的无线代理在 45 秒后不超时的方法吗?

android - 为什么范围级别为 "user"的自定义维度没有显示在我的报告中?

c - 在 C 中分配的指针上 malloc 安全吗?

c++ - 如何检查 malloc() 实现中返回数据的对齐?

ios - ECSlidingViewController 与 UIScrollView

iOS:计算一个长数的除法余数

c++ - 将多个内存块呈现为单个连续内存块的容器

c# - 内存快照触发dotMemory中的Garbage collection

ios - swift : Game starts to lag mid way