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生成代码以在window
中发布navigationController
和dealloc
。
我看不到任何分配和初始化window
和navigationController
的代码。我想知道发生了什么。
阿里。
答案 0 :(得分:6)
在XIB文件中,有一些代码可以实例化存储在其中的对象。
这就是UIWindow
实例是IBOutlet
的原因。
任何IBOutlet
的内容通常都是从XIB文件中实例化的。
Interface Builder不是代码生成器,它是一个实时对象工厂。
“Interface Builder将应用程序的接口保存为包含应用程序中使用的接口对象和关系的包。这些对象被归档(在其他上下文中称为序列化或编组的过程)到XML文件中或者扩展名为.nib的NeXT样式的属性列表文件。在运行应用程序时,正确的NIB对象被取消归档,连接到他们自己的应用程序的二进制文件中,并被唤醒“