gpt4 book ai didi

ios - 指定初始化程序的目的

转载 作者:行者123 更新时间:2023-11-28 22:26:27 25 4
gpt4 key购买 nike

我对在 Objective-C 中编写指定初始化程序的原因感到困惑。并调用父类(super class)的 init 方法以使其覆盖父类(super class)的实现?

谁能解释创建此类方法的可能原因是什么?

例如,

 -(id)initWithCardCount:(NSUInteger)count usingDeck:(Deck *)deck // Designated Initialiser
{
self = [super init];

if(self)
{
for (int i = 0; i < count; i++)
{
Card *card = [deck drawRandomCard];

if(!card)
{
self = nil;
}else
{
self.cards[i] = card;

}

}
}
return self;
}

最佳答案

大多数 Objective-C 对象最终都派生自 NSObject,但您尝试初始化的对象很可能是其他对象的子类。例如,您的子类 FarhanViewController 将从 UIViewController 子类化,而 UIViewController 是 UIResponder 的子类,最终是 NSObject。

在对象的 init 方法中调用“[super init]”允许基类初始化它需要设置的任何其他内容,以便正确地完成它的工作。

您还可以在此 Apple 文档中找到一些更有用的信息:"Multiple Initializers and the Designated Initializer"

关于ios - 指定初始化程序的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810906/

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