`
mikixiyou
  • 浏览: 1087415 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:349730
社区版块
存档分类
最新评论

storyboard和nib的差别

    博客分类:
  • iOS
阅读更多

在使用Storyboard管理的iOS应用中,它的组成部分为AppDelegate和ViewController这两个类以及MainStoryboard.storyboard文件组成。

Storyboard编辑器和Interface Builder很像(我觉得,他们其实就是一样的)。Storyboard管理不是一个视图控制器,而是所有的视图控制器。

建立在storyboard上的应用程序,在它启动时,使用 键UIMainStoryboardFile去指定必须被加载的storyboard的名字。

可以看到该类继承自UIResponder,这是使用storybaord的要求,而以前使用使用nib时,应用委托类是直接继承自NSObject的。
当这个设置提供后,UIApplication将加载MainStoryboard.storyboard文件,同时自动实例化来自storyboard的第一个视图控制器,将该视图控制器的视图们放入一个新的UIWindow对象中。这个过程不需编码。

(注:在nib管理的应用程序中,这个过程是需要编码的,加载视图控制器的所属视图和实例化UIWindow对象。)

iOS应用程序在系统上启动的过程是这样:
第一步,用户tap界面上的应用图标
第二步,应用调用main()函数
第三步,main()函数调用UIApplicationMain()函数。(注:在nib管理的应用程序中,最后一个参数是nil;而在storyboard管理的应用程序中,最后一个参数是AppDelegate的类名称。因为nib文件包含了appDelegate的名称,而storyboard中没有,所以必须在UIApplicationMain()中指定appDelegate的名称。)
main.m文件是应用启动的初始文件。打开main.m文件,如下所示:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
             return UIApplicationMain(argc, argv, nil,
                      NSStringFromClass([AppDelegate class]));
   }
} 
 

在AppDelegate中,如下所示:

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property ( strong, nonatomic ) UIWindow * window;
@end
 


 
而且该类只有一个UIWindow的属性,和nib管理的应用程序不同的是,这里没有IBOutlet前缀。这表示这个属性不是一个输出口。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics