在UIViewController中初始化ONCE的位置

问题描述

| 我有一个UIViewController子类,我试图找出要覆盖的内容,以便每个对象实例只能运行一些初始化代码
viewDidLoad
方法似乎是显而易见的答案,但问题是,如果控制器由于出现内存警告而将视图重置,则
viewDidLoad
可能会运行多次。
initWithNibName:bundle:
init
initWithCoder:
方法似乎也是不错的选择,但是哪一个要覆盖?
awakeFromNib
方法是另一个考虑因素,但似乎未在我的视图控制器中执行。 有没有办法做到我所缺少的?     

解决方法

        您可能仍然可以使用viewDidLoad,但是在内部使用一个静态布尔值来查看您是否已经去过那里。
static BOOL didInitialize = NO;
if (didInitialize == YES)
    return;

didInitialize = YES;
/* initialize my stuff */
    ,        UIViewControllers的指定初始化方法(所有其他初始化方法都应调用的方法)为ѭ7。如果要在创建视图控制器时初始化某些内容,请重写该方法。
-viewDidLoad
用于表示取决于控制器视图的任何设置。如您所指出的,该方法可能会运行多次,因为视图可能会加载多次。除非您的视图控制器本身存在于笔尖中,否则
-awakeFromNib
将无济于事,即使如此,仅当您要初始化的东西依赖于同一笔尖中的其他对象时,这才有意义。     ,        
+(void)initialize
呢?据我所知,这是一个iOS初始化类的类初始化程序。