iOS 5 + ARC - 确定指针释放内存的nil?

时间:2011-11-07 15:27:15

标签: ios memory-management automatic-ref-counting

我正在努力遵守Apple关于在我的应用中响应低内存警告的指导原则。指南说:“收到(低内存警告)后,您的应用程序必须释放尽可能多的内存,方法是释放不需要的对象,或清除以后可以重新创建的内存缓存。”

问题是,如何使用ARC“释放”内存?

例如,假设我在视图的视图层次结构中有一个不在屏幕上的图像。在didReceiveMemoryWarning中,我目前通过调用removeFromSuperview将其从视图中删除,但我仍然有一个指向UIImage本身的指针。我还应该尝试释放这段记忆吗?怎么样?通过将nil分配给指针?

TIA:John

2 个答案:

答案 0 :(得分:3)

  1. 当您获得-didReceiveMemoryWarning时,系统应自动释放您的视图,并应调用-viewDidUnload。因此,如果您不持有对视图子视图的引用,则您不负责释放它们。

  2. 否则,如果您确实持有对要释放的某些资源的引用,则只需通过为NSObject s分配“nil”来取消引用,并为其他类型调用相应的释放函数引用,例如,CFRelease对象Core Foundation

答案 1 :(得分:0)

使用IBOutlet属性制作所有strong属性。

将所有IBOutlet属性全部设置为nil中的viewDidUnload