Objective c 初始化视图控制器变量?

Objective c 初始化视图控制器变量?,objective-c,xcode,xcode4,Objective C,Xcode,Xcode4,这对我来说是一个天真的问题,但我的视图控制器中有一些变量,我不确定应该在哪里初始化它们。我的意思是,如果这是一个自定义类,那么通常我会在init方法或自定义initWith方法中初始化并给它们赋值 上述问题产生的其他问题包括: 其中是视图控制器的init方法。而且,由于视图控制器本质上是一个类,因此在某些地方必须是alloc init。正在创建的视图控制器实例具体在哪里 多谢各位 Parijat Kalia在正确的位置初始化变量对于视图控制器非常重要。您可以在四个位置执行此操作: 1) init

这对我来说是一个天真的问题,但我的视图控制器中有一些变量,我不确定应该在哪里初始化它们。我的意思是,如果这是一个自定义类,那么通常我会在init方法或自定义initWith方法中初始化并给它们赋值

上述问题产生的其他问题包括:

其中是视图控制器的init方法。而且,由于视图控制器本质上是一个类,因此在某些地方必须是alloc init。正在创建的视图控制器实例具体在哪里

多谢各位


Parijat Kalia

在正确的位置初始化变量对于视图控制器非常重要。您可以在四个位置执行此操作:

1) initWithNibName:包: 这实际上是视图控制器的构造函数。调用[[MyViewController alloc]init]实际上最终调用了[[MyViewController alloc]initWithNibName:nil bundle:nil],这表明您使用的是默认的nib名称

2) 从笔尖醒来 当完全从nib实例化视图控制器时,不会调用initWithNibName:bundle:,因为您不是在创建新的视图控制器,而是在反序列化现有的视图控制器。在这种情况下,将在反序列化后调用awakeFromNib

initWithNibName:bundle和awakeFromNib是初始化变量的好地方,这些变量在视图控制器的生命周期中只创建一次,与我喜欢在名为“setup”的函数中初始化这些变量并从initWithNibName:bundle和awakeFromNib调用[self setup]的任何视图无关

3) viewDidLoad 加载视图时调用。初始化与视图相关的内容的好地方

4) 视图将显示:动画
当视图即将变为可见时调用。子视图的尺寸(即边界、框架、位置…)仅在此函数中可用,因此您希望在此处初始化依赖于这些数量的变量,而不是使用上述任何一种方法。

在正确的位置初始化变量对于视图控制器非常重要。您可以在四个位置执行此操作:

1) initWithNibName:包: 这实际上是视图控制器的构造函数。调用[[MyViewController alloc]init]实际上最终调用了[[MyViewController alloc]initWithNibName:nil bundle:nil],这表明您使用的是默认的nib名称

2) 从笔尖醒来 当完全从nib实例化视图控制器时,不会调用initWithNibName:bundle:,因为您不是在创建新的视图控制器,而是在反序列化现有的视图控制器。在这种情况下,将在反序列化后调用awakeFromNib

initWithNibName:bundle和awakeFromNib是初始化变量的好地方,这些变量在视图控制器的生命周期中只创建一次,与任何视图都不相关。我喜欢在名为“setup”的函数中初始化这些变量,并从initWithNibName:bundle和awakeFromNib调用[self-setup]

3) viewDidLoad 加载视图时调用。初始化与视图相关的内容的好地方

4) 视图将显示:动画
当视图即将变为可见时调用。子视图的尺寸(即边界、框架、位置…)仅在此函数中可用,因此您希望在此处初始化依赖于这些数量的变量,而不是在上述任何一种方法中。

awakeFromNib中的初始化变量-不起作用我的是NIB创建的视图,是基于视图的应用程序,还有其他线索,谢谢你的帮助!你到底想初始化什么?还有,当你说“没有工作”时,你是什么意思?你是什么意思没有工作?你期待什么?你到底得到了什么?你能提供一些代码吗?否则我们将在黑暗中冒险@aleph_null的答案非常清楚,alreadyI在这两个方法的NSLog中都发布了,以检查这些方法是否正在启动……但不幸的是,没有NSLog注释表明您的xib实际上连接到了您的类?检查
文件的所有者
是否将其类设置为您在awakeFromNib中放置
NSLog()
'sinitialized变量的类-不起作用我的是一个NIB创建的视图,是一个基于视图的应用程序,还有更多线索,谢谢您的帮助!你到底想初始化什么?还有,当你说“没有工作”时,你是什么意思?你是什么意思没有工作?你期待什么?你到底得到了什么?你能提供一些代码吗?否则我们将在黑暗中冒险@aleph_null的答案非常清楚,alreadyI在这两个方法的NSLog中都发布了,以检查这些方法是否正在启动……但不幸的是,没有NSLog注释表明您的xib实际上连接到了您的类?检查
文件的所有者
是否将其类设置为放置
NSLog()的类