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

我有一个视图控制器的属性,以确定其行为。 这些由prepareForSegue父项设置。

在我的程序中引发的潜在的错误是,有问题的父母不能保证设置的属性,所以我想有一个默认值。 在研究中,我现在明白Objective C中的属性没有默认值。 这给我留下了以下select:

  • 在子视图的viewDidLoad方法中设置属性的默认值。 然而,在调查中, viewDidLoad在父级的prepareForSegue 之后被调用 – 所以当parent实际设置属性时,我将覆盖父级的值。
  • 然后我想我可以使用(id) init初始化值,但是,至less在使用故事板时,这个方法根本不被调用!

我可能有一个解决方法,对象将初始化为默认值,但在这种情况下,我想传入的是BOOL。 因为即使没有正确初始化,bool也会有一些值 ,所以我不能testing它是否为非零。

在父级的prepareForSegue之前,是否有任何机会在子视图控制器中初始化值?

重写init将不会帮助,因为它不是UIViewController对象的指定初始化程序。 当手动实例化视图控制器时- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle时,从故事板加载- (id)initWithCoder:(NSCoder *)decoder将被调用。 如果你想在视图控制器初始化的时候设置属性,你必须重写这两个初始值。

在研究中,我现在明白Objective C中的属性没有默认值。

他们是这样。 对象0 ,整数值为0.0 ,浮点数为0.0等。如果你需要默认值以外的值,你应该在适当的init方法中设置它们。

Interesting Posts