gpt4 book ai didi

objective-c - 为什么我们使用 [super dealloc] 而不是 [self dealloc] 或 [object dealloc]

转载 作者:可可西里 更新时间:2023-11-01 06:17:47 26 4
gpt4 key购买 nike

演讲的主题是 Objective-c 中的类和对象。我无法理解 [super dealloc] 的概念。我们有一些类 myClass,它继承自 NSObject。它有一些方法并从父类继承其他方法。所以我们这里也有 dealloc 方法。为什么我不能只使用 [myInstance dealloc]?我认为我们调用父类方法来杀死类的实例是否正确?为什么这么复杂?

这不是关于 [myInstance 版本] 的讨论,我同意这个概念。

最佳答案

已经有一些很好的答案,但我会更直接地回答问题:

  1. 我们为什么要写[super dealloc]

    我们写它是因为它实际上会破坏实例。否则内存将永远不会被释放。

  2. 我们为什么不写[self dealloc]

    我们不能这样写,因为唯一应该显式调用 dealloc 的地方是在 dealloc 方法中。在 dealloc 中执行 [self dealloc] 只会让方法调用自己,然后调用自己,调用自己,调用自己,再调用自己......。

  3. 我们为什么不写[myInstance dealloc]

    我假设 myInstance 只是另一个指向对象的方法中变量的占位符,而你问的是为什么我们不直接调用 dealloc那个变量。这是因为您不知道对象应该在什么时候释放retainrelease 的全部意义在于让您不必跟踪对象何时准备好销毁。您只需适本地保留和释放对象,当 release 被调用足够多次时,表明该对象没有更多所有者想要保留对它的引用,它将调用 dealloc 本身。

关于objective-c - 为什么我们使用 [super dealloc] 而不是 [self dealloc] 或 [object dealloc],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com