你的位置:首页 > 软件开发 > 操作系统 > iOS之nib、xib及storyboard的区别及storyboard的加载过程

iOS之nib、xib及storyboard的区别及storyboard的加载过程

发布时间:2015-11-23 01:00:06
先讲述下nib, nib是3.0版本以前的产物,在终端下我们可以看到,NIB其实是一个文件夹,里面有可执行的二进制文件;区分xib和storyboard的区别?不同点:1> 无论nib也好,xib也好,最终在执行UIViewController生命周期函数loadVie ...

iOS之nib、xib及storyboard的区别及storyboard的加载过程

先讲述下nib, nib是3.0版本以前的产物,在终端下我们可以看到,NIB其实是一个文件夹,里面有可执行的二进制文件;

区分xib和storyboard的区别?

不同点:

1> 无论nib也好,xib也好,最终在执行UIViewController生命周期函数loadView之前,都会转化成可执行的nib文件。

2> storyboard是多个xib文件集合的描述文件,一个xib文件对应着一个视图控制器和多个视图。

  toryboard时,一个工程只需要一个主storyboard文件就可以。

相同点:

1> 是基于

//---------------------------------------------------------------------------------------------------------------------------------------------------------------//

main.storyboard 文件。既然如此,那么storybord又是如何加载的呢?

 

在创建storyboard apps 时,会自动生成几个默认的文件, AppDelegate.h 便是其中之一。 示意如下:

 

import <UIKit/UIKit.h>@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;

 

iOS之nib、xib及storyboard的区别及storyboard的加载过程你会看到, UIMainStoryboardFile 或 “Main storyboard file base name” 的键值设为了 Main。当app 启动时,UIApplicaiton 会自动加载main.storyboard 文件。 同时,会自动加载 main.storyboard 上的第一个视图控制器 (view controller),并且,将该 view controller 所对应的 View 加载到UIWindow 对象中。

也许你已经注意到了, app 启动时,做了这么的工作,但我们还没有编写一行代码。 storyboard技术的引进,其最大的意义在于, 大大减少与 UI相关的 代码量。
storyboard 帮手:Deployment Info 的设置。 如下:
storyboard 帮手:main.m 文件, 代码如下:
#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char *argv[]){  @autoreleasepool {    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));  }}
因为整个App 启动和运行的入口,就在UIApplicationMain中。 
以上讲述了 sotroyboard 的加载过程。 不管nib 派还是 storyboard 派,其UIMainWindow的加载原理都是一样的。 只不过,nib派需要手工编写更多的代码。 明白了这些道理, 即使基于 Xcode5创建工程,你也可以置 main.storyboard 于不顾, 尽情地游走于自己创建的nib之间。 正所谓“我的nib,我说了算, 想创建多少nib,就创建多少”。 就是这个 Feel, 倍爽。 一天写 1000行代码,轻松任我行。 
 

 


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:iOS之nib、xib及storyboard的区别及storyboard的加载过程

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。