gpt4 book ai didi

Objective-c 在 init 方法中使用父属性

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:57 25 4
gpt4 key购买 nike

我读到在 init 方法中使用属性被认为是不好的做法。但是我应该使用父类属性吗?

例如

-(id) init
{
if (self = [super init])
{
self.parentProp = someVal; // (1)
parentProp = someVal; // (2)
}

return self;
}

什么是首选(1 或 2),为什么?谢谢!

最佳答案

在调用 super 的 init 方法并返回后,对象的父类(super class)部分已初始化并准备好使用。在那之后使用它的属性访问器是正常的,并且是预期的。例如。如果您创建了 UIViewController 的子类,那么在您的 init 方法中设置您的(继承的)title 属性或修改您的 navigationItem 是正常的。

也就是说,您可以打破这种行为。如果您重写了父类(super class)的一个方法(包括它的访问器方法之一),然后在您的 init 方法中调用该方法,您需要确保在您的对象完全初始化之前被重写的方法能够正常运行。

更巧妙的是,也许您重写了一个父类(super class)方法,然后调用了一个您没有重写的父类(super class)方法。好吧,如果您调用的方法转过来调用您已覆盖的方法怎么办?您也需要意识到这种可能性。

综上所述,我重申,在通过调用其中一种 init 方法对其进行初始化后,使用父类(super class)的属性访问器对其进行自定义是完全正常的。

关于Objective-c 在 init 方法中使用父属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457877/

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