【发布时间】:2025-12-17 12:45:01
【问题描述】:
对象分配后真的有必要调用init吗?我的意思是:例如,在 Java 中,如果您不调用它(构造函数),无论如何都会调用它(默认构造函数)。在 Objective C 中,您可以创建一个替代构造函数(如 Java),我看到最多的东西之一是 self = [super init]。我读到:cocoawithlove article,但最后不清楚我们为什么要进行这样的分配self = [super init]。它只是说[super init] 可以返回一个不同的对象,然后我们必须用那个新对象替换self。这无法解释为什么我们首先要这样做。
【问题讨论】:
-
根据继承逻辑,可以重写超类的方法。如果你覆盖了
-init方法,那么 super 的-init将永远不会被调用。您确保在新的-init方法中手动调用该方法,它将初始化您的超类。如果你写了超类,如果你 100% 确定一切都会正常启动,你可以避免调用 super,但是当你对超类一无所知时,错过调用 super 的-init方法是非常危险,可能会导致某些私有变量无法初始化,并导致不良行为或崩溃。
标签: objective-c init