我最近做了一个客观的测试,看看我会怎么做。
原来我的得分并不像我希望的那么好。这意味着更多的学习。
在测试期间,我被问到这个问题:
你如何释放一个物体?
一个。 [obj dealloc]; B. [obj发布]; C.以上都不是
我的选择是A,我不知道它是否正确。问题是混乱:不释放调用dealloc,因此实现相同的结果?
答案 0 :(得分:7)
没有。 release
递减对象的引用计数。
您不直接致电dealloc
。调用release
减少引用计数,并在引用计数变为零时让运行时调用dealloc
。
答案 1 :(得分:0)
是的,release
确实会调用dealloc
,但只有在减少引用计数后才会调用,并且仅在引用计数为零时调用。 NSObject class reference表示release
:
"Decrements the receiver’s reference count."
"The receiver is sent a dealloc message when its reference count reaches 0."
答案 2 :(得分:0)
我知道答案已被接受,但我无法抗拒添加自己的想法。
测试问题的答案在技术上是C.您不会释放对象,运行时会在认为它们不再使用时释放它们。
如果您在引用计数环境中释放对象,则不会释放它,仅表示您放弃任何所有权声明。当没有人拥有所有权声明时,运行时将调用dealloc并释放该对象。同样,在垃圾收集环境中,当您覆盖引用时,表示您不再对它感兴趣。一旦所有引用都消失了,在稍后的某个不确定时间,将finalize发送到该对象并释放该对象。