Xcode 中的内存管理
Posted
技术标签:
【中文标题】Xcode 中的内存管理【英文标题】:Memory management in Xcode 【发布时间】:2015-07-11 02:48:50 【问题描述】:我尝试在 Xcode 中分配和释放一个可变数组
NSMutableArray *inventory = [[NSMutableArray alloc] init];
[库存添加对象:@"one"];
[库存放行];
有人帮我解释一下为什么“库存”发布后,它仍然存储 1 个对象吗?
【问题讨论】:
【参考方案1】:假设您在没有自动引用计数 (ARC) 的情况下工作:
当您释放一个对象时,这会将该对象先前占用的内存标记为空闲。但是,它不一定会立即破坏该记忆中的内容。
如果您尝试(不正确地)访问数组内存地址中的内容,您很可能会发现数组成员仍然存在。但请注意,这是不安全的,数组及其成员可以(并且将)随时被覆盖。
您应该将 ARC 用于任何生产代码,以避免内存管理不善的危险。效果很好。
【讨论】:
没问题!如果你真的想了解 Apple 如何实现 ARC 的细节,我强烈推荐this article。 我们分配一个对象有两个方面:首先,在栈内存中创建一个指向内存地址的指针。其次,声明该内存地址的所有权。在“释放”之后,我们放弃所有权(标记我们不再使用该内存地址的内存)但指针仍然指向该地址内存。这就是为什么“库存”仍然存储 1 个对象以上是关于Xcode 中的内存管理的主要内容,如果未能解决你的问题,请参考以下文章
使用Xcode Instruments Leak解决内存泄漏问题