iOS 5 和 6 在 ARC 下释放 malloc-ed 内存

标签 ios objective-c memory malloc automatic-ref-counting

如何在 ARC 下的 Objective-C 中释放动态分配的内存?

通过动态我的意思是用malloc分配给一些ivar的内存。

deallocviewDidUnload 不再被调用,至少在我的测试中是这样。

那么当不再需要 View Controller 时,何时以及如何开始释放内存?

我所做的是创建名为 Releasable 的协议(protocol)(这是我从 C# 中窃取的想法),它具有单一方法 -(void) release。 当不再需要对象时,一些外部代理会调用它。

最佳答案

dealloc 仍然在ARC下被调用。您只是没有显式调用 [super dealloc]。如果 dealloc 没有被调用,那么某些东西仍然有对对象实例的引用。在您的项目上运行分析器,看看会发生什么。

viewDidUnload 仍会在 iOS 5 下调用,但不会在 iOS 6 下调用。

完全不需要添加协议(protocol)和release 方法。

关于iOS 5 和 6 在 ARC 下释放 malloc-ed 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155975/

相关文章:

ios - 如何使用 AVFoundation 延迟几秒同时录制和播放捕获的视频?

objective-c - 死锁 : How do you determine if a call may cause unsafe painting off of the main thread for iOS?

iphone - 具有自定义渐变背景的 UITableViewCell,另一个渐变作为高亮颜色

iOS:对于一个简单的 iOS 应用程序来说,这是一个合理的设计模式吗?

linux - 使用物理地址获取内存的哪种实现是正确的?

ios - 错误 MT1108 : Could not find developer tools for this device

ios - 在objective-c中控制一个 channel 的音量

ios - 从图像 iOS 制作视频

c++ - 段错误 11 : gdb reason 13

c - 释放指向字符数组的指针的内存