Objective-C中的内存管理混乱?

时间:2016-05-16 18:23:20

标签: objective-c memory-management automatic-ref-counting

我读过有关手册& Objective-C中的ARC内存管理。在下面的几点中,我对Objective-C中的内存管理是否真的感到困惑?

  • 始终在ARC和手动内存下的dealloc中清除属性 管理。

  • 在ARC和手册下,不必在dealloc中输出属性 记忆管理。

  • 在ARC下的dealloc中输出属性,但不在手动内存中 管理。

  • 在手动内存管理下删除dealloc中的属性但是 不在ARC。

3 个答案:

答案 0 :(得分:1)

您永远不必“删除”属性,只需在进行手动内存管理时释放它们。

当您将值设置为nil时,您将丢失那里的旧值。旧值存储了对象的地址。现在该对象仍然存在,但您不再知道它的地址,也无法释放它。

发布告诉对象“我不再使用你,如果我是最后一个,那就删除自己”。在ARC中,编译器会自动添加保留和释放调用。自己很少有任何理由自己进行手动内存管理。 ARC是要走的路。

答案 1 :(得分:1)

在大多数情况下,没有太多理由使用手动内存管理。

但是要回答你的问题,请不要在dealloc中。代替:

  1. 对于使用ARC的dealloc中的属性不执行任何操作。
  2. 在手动管理中释放dealloc中强烈保留的属性。 [myObject release];

答案 2 :(得分:0)

只需使用ARC和快乐的日子!

但是,您至少应该注意strong and weak references之间的区别。