InterfaceBuilder 在 fooAppDelegate.m 中为我生成此方法:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}
IB 还将 UIWindow *window;
放入 fooAppDelegate.h 中,将 @synthesize window;
放入 fooAppDelegate.m 中,并相应地为 navigationController
放入。 IB 生成代码以在 dealloc
中释放 window
和 navigationController
。
我看不到任何分配和初始化window
和navigationController
的代码。我想知道这种情况发生在哪里。
阿里。
最佳答案
在 XIB 文件内部,有一些代码用于实例化存储在其中的对象。
这就是 UIWindow
实例是 IBOutlet
的原因。
任何 IBOutlet
通常都是从 XIB 文件实例化的。
Interface Builder 不是代码生成器,它是一个实时对象工厂。
“Interface Builder 将应用程序的接口(interface)保存为一个包,其中包含应用程序中使用的接口(interface)对象和关系。这些对象被存档(在其他上下文中也称为序列化或编码的过程)到 XML 文件中或带有 .nib 扩展名的 NeXT 样式属性列表文件。运行应用程序时,正确的 NIB 对象将被取消归档,连接到其所属应用程序的二进制文件中,并被唤醒”
关于iPhone 应用程序生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441105/