当故事板加载时,首先调用什么方法?

Jam*_*sev 7 initialization storyboard xcode4.2 segue

使用Xcode 4.2,在我的应用程序中,视图加载由segue事件触发.首先在视图控制器中调用什么方法?

-(void) viewWillAppear:(BOOL)animated 有效,但它是第一个吗?

初始化发生Storyboard似乎init,在创建对象时,永远不会手动调用方法.

让我澄清一下,在手动创建类的实例时,我们通常[[alloc]init]是第一个.[init]在这种情况下,是第一个要执行的方法,也是各种初始化的好地方.

init当通过segue事件发生类实例化时,方法的等价物是什么?在这种情况下,什么方法应该包含所有初始化逻辑?

Don*_*Lea 14

我认为最好的选择是-(void)awakeFromNib.这种情况只发生一次,而viewWillAppearviewDidLoad等可能您的初始化之后被调用一次以上.

更新:由于下面让-丹尼斯Muys指出,-(id)initWithCoder:(NSCoder *)decoder对于那些只被调用一次作为一个初始化器更好的选择-(void)awakeFromNib必须被调用一次以上的潜力.

  • 除了` - (void)awakeFromNib`*可以多次调用(在一些相当罕见的情况下).只调用一次的初始化程序是`initFromCoder` (3认同)

小智 8

根据Apple的View Controller Programming Guide,

在故事板中创建视图控制器时,在Interface Builder中配置的属性将在存档中序列化.稍后,当实例化视图控制器时,此存档将加载到内存中并进行处理.结果是一组对象,其属性与您在Interface Builder中设置的属性相匹配.通过调用视图控制器的initWithCoder:方法加载存档.然后,在 awakeFromNib实现该方法的任何对象上调用该方法.您可以使用此方法执行任何需要已实例化其他对象的配置步骤.