iphone - 使用 viewDidUnload 在 iPhone 上进行内存管理

标签 iphone objective-c

如果你在 viewDidUnload 中设置了一个属性为 nil,你需要在 dealloc 中再次释放它吗?

最佳答案

没有,但是:

  • 您不需要检查这种情况。 [nil release] 没问题。
  • 你不能指望调用 viewDidUnload

所以只需在 -dealloc 中正常释放即可。

当然,你必须确定你确实释放了之前的对象。 如果您使用了合成 setter,您将隐式执行此操作:

self.myProperty = nil;  // good
// or
[self setMyProperty:nil]; // also good

但是将 ivar 设置为 nil 会泄漏:

self->myProperty = nil; // leaky as a sieve
// or 
myProperty = nil; // as useful as a screen door on a submarine

这些是常见错误。

另请注意,在 -dealloc 中将属性设置为 nil 不是一个好主意。正如 Kendall 在评论中指出的那样,您可能会意外调用 KVO 行为。在 Properties in dealloc: release then set to nil? or simply release 有更全面的讨论.

关于iphone - 使用 viewDidUnload 在 iPhone 上进行内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490495/

相关文章:

ios - 在 TextField 中放置 PlaceHolder

objective-c - 循环缓冲录音iOS : Possible?

ios - 导航栏按钮不起作用,因为它不是 xcode 中的初始场景

objective-c - Cocoa:namesOfPromisedFilesDroppedAtDestination 仅返回一个文件

ios - 在子类的工厂方法中调用 [super alloc] 会发生什么?

iphone - 有谁知道 iphone 地址簿框架的包装器?

ios - 如何在 iOS 中将 UILabel 的字体名称设置为 HelveticaNeue Thin?

iphone - 如何添加到 NSDictionary

ios - 自定义应用程序中的 UITableview 部分

ios - Ionic v1 安全区域无法在 Xcode 11.5 模拟器上运行