gpt4 book ai didi

ios - 你在哪里初始化 View Controller 中的属性值?

转载 作者:可可西里 更新时间:2023-11-01 03:49:19 24 4
gpt4 key购买 nike

我有一个 View Controller ,其属性决定了它的行为。这些由其父级在 prepareForSegue 中设置。

这在我的程序中引起的潜在错误是不能保证有问题的父级设置属性,所以我想要一个默认值。通过研究,我现在了解到 Objective C 中的属性没有默认值。这给我留下了以下选择:

  • 在 subview 的 viewDidLoad 方法中设置属性的默认值。但是,根据调查,viewDidLoad 在父级中被称为 after prepareForSegue - 所以当父级确实设置了属性。
  • 然后我想我可以使用 (id) init 来初始化这些值,但是,至少在使用 Storyboard时,根本不会调用此方法!

我可能有一个解决方法,即对象将初始化为默认值,但在这种情况下,我只想传入一个 BOOL。由于 bool 将具有一些值,即使未正确初始化,我也无法测试它是否为非 nil。

在父级 prepareForSegue 之前,是否有机会在 subview Controller 中初始化值?

最佳答案

重写 init 不会有帮助,因为它不是 UIViewController 对象的指定初始化程序。当手动实例化 View Controller 时 - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle 被调用,当从 Storyboard加载时 - (id)initWithCoder:(NSCoder *)解码器 将被调用。如果你想在初始化 View Controller 时设置属性,你必须覆盖两个初始化器。

On researching, I now understand that properties in Objective C don't have default values.

他们有。 nil 表示对象,0 表示整数值,0.0 表示 float 等。如果您需要除此之外的默认值,您应该在适当的初始化方法。

关于ios - 你在哪里初始化 View Controller 中的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19697410/

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