美文网首页
项目初始化架构

项目初始化架构

作者: LucXion | 来源:发表于2017-09-11 09:59 被阅读0次
    • 项目基本架构图
    Snip20170911_1.png
    程序启动时,手动加载UIWindow
    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Override point for customization after application launch.    
    // 1.先创建window    
        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
        self.window.backgroundColor = [UIColor yellowColor];
    
    // 2.加载控制器   
    // 2.1通过xib添加,加载顺序 view -> viewController.xib -> 默认创建一个几乎透明的view;    
        UIViewController *vc1 = [[UIViewController alloc] init];   
    // 指定加载xib    
        UIViewController *vc2 = [[UIViewController alloc] initWithNibName:@"xib的名字" bundle:nil];      
    // 2.2通过storyBoard添加。    
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    // 2.2.1 storyBoard加载Identifier的标记的控制器。    
        [storyBoard instantiateViewControllerWithIdentifier:@"Identifier"];
    // 2.2.2 storyBoard默认加载箭头指向的控制器。
        UIViewController *vc = [storyBoard instantiateInitialViewController];
          
    // 3. 设置UIWindow的根控制器
        self.window.rootViewController = vc;
    // 4. 将UIWindow显示出来    
        [self.window makeKeyAndVisible];    
        return YES;
    }
    
    
    • 控制器的3种创建方式

    方法一 alloc init 方法

        UIViewController *vc1 = [[UIViewController alloc]init]; 
    

    方法二 storyboard
    第一步:
    新建storyboard和操作: 创建新的storyboard(新建文件 user interface 中的 storyBoard) 在新建的storyboard中添加控制器(storyboard就是为了添加控制器的) 给stoBoard设置入口初始化控制器 箭头指向 : Is Initial View Controller
    第二步:
    获取storyboard文件对象:(此处类似加载xib文件)

    // bundle在尾,可以为nil,这里取storyboard文件只是为了根据文件找控制器
     UIStoryboard *board = [UIStoryboard storyboardWithName:@"ViewControllerOne" bundle:nil];   
    
    // 初始化storyboard中的控制器 : 根据控制器的标识
    UIViewController *rootVc = [board instantiateViewControllerWithIdentifier:@"tuhuangse"] 
    

    方法三 xib : xib的本质就是一个View,原则上不能拖控制器,但实际上能直接拖控制器,但是控制器不能用

        第一部分: 创建UIViewController类文件
        
        第二部分: 新建xib和操作 : 新建xib ,拖入控件 , fileowner(在导航区)绑定Controller类文件,再连线View
    
        第三部分: 在appdelegate的程序启动完成方法中,根据fileowner绑定的Controller文件创建控制器(用loadnib的方法,确定要加载的View)
    
        创建xib的时候用empty,不然容易冲突
    

    注意:当出现xib文件名与控制器名相同(为不加Controller的名,或者完全同名)时,加载xib可以不填写文件名:直接alloc init,此时加载xib的优先级,完全同名的优先级比较高.

    初始化控制器的时候:
    调用init方法,底层调用了initWithFrame方法
    storyBoard或者xib加载的调用initWithCoder方法,解析文件;

    控制器中的View是懒加载的 : (根据懒加载的特点:用到的时候才会创建来证明)

    证明步骤 : 手动创建根窗口,在进行到将窗口设置为主窗口的方法前,都不会进入ViewdidLoad方法 / 但是如果在设置主窗口之前就设置控制器View的背景颜色,那么就会进入ViewdidLoad方法

    相关文章

      网友评论

          本文标题:项目初始化架构

          本文链接:https://www.haomeiwen.com/subject/pluxsxtx.html