NIB文件本质上是一种XML文件,定义了对象及对象间的关系。
iOS在运行时从NIB文件进行unserialziation,即根据NIB中的定义来完成两个工作
1)生成NIB中定义的对象(包括分配内存,初始化)
2)构建NIB中定义的对象关系(包括IBOutlet,IBAction等)
其中的对象关系,不但包含NIB中定义的对象之间的关系,也可以包括NIB中的对象和外部对象之间的关系,外部对象一般在Interface Builder中以Placehoders的身份出现,并且
这些Placeholders对象需要通过编码其它NIB文件定义来完成对象生成和初始化。
在开始使用Interface Builder时,很困扰的一个问题是难以分清哪些工作有谁来完成
1)哪些工作由Interface Builder完成?
2)哪些工作由Object C编译器或运行时完成?
3)哪些工作应该由程序员自己来完成?
基于以上对NIB文件的理解,可以得出以下结论
不需要程序员通过编码完成的工作包括:
1)对象创建及初始化
------------------------------------------------------------------------------------------------* UIApplication Created by Framework
All objects in NIB file
------------------------
* UIApplication Delegate Created by unserializing from NIB(main)
* UIWindow Created by unserializing from NIB(main)
* UIView window is the view (windows based app)
Created by ViewController NIB (view based app)
* UIViewController Created by Main NIB (view based app)
-----------------------------------------------------------------------------------------------
2.1 通过IBOutlet属性构建的对象引用关系
* UIApplication->delegate = Default AppDelegate Object
* AppDelegate->ViewController = UIViewController from NIB (view based app)* AppDelegate->Window = UIWindow from NIB
等等
2.2 通过Interface Builder构建的视图关系