gpt4 book ai didi

ios - 用自己的initWithFrame初始化一个类可以吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:15 24 4
gpt4 key购买 nike

我正在将 iPhone 应用程序转换为通用应用程序。我有一个 NIB View ,我想按原样在 iPad 上使用它,但调整了大小和位置。在 iPhone 上,我通常使用 initWithNibName 进行初始化...

 EventEditViewController *eventEditViewController = [[EventEditViewController alloc] initWithNibName:@"EventEditViewController" bundle:nil];

我发现由于各种原因,这对我来说在 iPad 上效果不佳。所以我创建了自己的初始化方法来在 iPad 上运行时调用...

EventEditViewController *eventEditViewControllerForIPad = [[EventEditViewController alloc] initWithFrame:iPadFrame eventDate:longDate event:eventName delegate:self];

这解决了几个问题。一个是如何调整 View 大小和将其定位在我想要的位置,以及如何正确初始化某些变量。实际上,我传递的变量比您在这里看到的要多。

它工作得很好,但我现在才注意到,与 initWithNibName 不同,viewDidLoad 在我的 initWithFrame 方法之前触发。我之所以发现这一点,是因为我试图在 viewDidLoad 中访问的一个变量显示为僵尸,我认为我正在我的 initWithFrame 方法中初始化它。

我对这种行为感到惊讶。正常吗?在 alloc/init 调用中,在命名的 initMethod 之前加载 View 对我来说没有意义。

我现在想知道我正在做的事情是否不是一件好事。正如我所说,它工作得很好,但我不应该在这里使用我自己的初始化方法吗?

如果可以这样做,也许有人可以解释为什么在 init 方法之前加载 View 。

谢谢,

约翰

最佳答案

如果您的 -initWithFrame:... 方法正在访问 View Controller 的 view 属性,则 -viewDidLoad 将在 init 方法之前被调用完成是因为 view 访问器将导致加载 View 。

至于是否可以使用自己的方法,只要你的init方法调用类的指定初始化器就可以了。

关于ios - 用自己的initWithFrame初始化一个类可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714766/

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