是否保留了代表?

Kal*_*esh 8 xcode objective-c ios

我知道,代表永远不会被保留!永远!

但任何人都可以解释为什么代表永远不会被保留?...

Thanx提前

Tom*_*rdt 14

这是一个内存管理的事情.

Objective-C使用引用计数来保持内存清洁.这确实意味着它无法检测循环关系.

例:

  • 对象A拥有对象B.对象B由对象A保留.
  • 对象B具有作为对象A的委托.对象A由对象B保留.
  • 对象C拥有对象A.对象A由对象C保留.
  • 对象A现在的retainCount为2,对象B的retainCount为1
  • 对象C被释放,并释放对象A.
  • 对象A和B现在的retainCount为1,因为它们彼此拥有.系统不会释放它们,因为retainCount仍为1(仍由另一个对象拥有)
  • 内存泄漏!

  • iOS上没有垃圾收集器.绝对保留计数毫无意义. (2认同)