博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用代码创建一个空的工程
阅读量:5370 次
发布时间:2019-06-15

本文共 1949 字,大约阅读时间需要 6 分钟。

   如何用代码创建一个空的工程?

   首先删除掉自带的ViewController类、Main.storyboard和Target-Deployment Target-Main Interface(删除“Main”),然后在AppDelegate.m的didFinishLaunch中进行_window的实例化和显示操作。此时程序执行到didFinishLaunch方法时,self.window仍为nil,并没有被实例化。

  如果进删除ViewController类、不删除Main.storyboard,程序照样正常启动;程序执行到didFinishLaunch方法时,_window已初始化完成,因为程序将storyboard中的viewController实例化,并赋给_window; 此时再在AppDelegate.m中写如下代码,[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];就会再新创建一个window再次赋值给self.window。原来加载了storyboard中VC的window就会被销毁。

#import "AppDelegate.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        // 通过打断点看出,在此之前self.window = nil;        self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];    self.window.backgroundColor = [UIColor whiteColor]; //屏幕显示的是self.window的白色        UIViewController *rootVC = [[UIViewController alloc]init];    self.window.rootViewController = rootVC; //rootVC.view = nil;是一片漆黑        [self.window makeKeyAndVisible];        return YES;}

 

 

今日突发奇想,能不能通过覆写AppDelegate类的初始化方法来创建一个空的工程呢?于是作如下操作:

#import "AppDelegate.h"@interface AppDelegate ()@end@implementation AppDelegate//通过重写AppDelegate类的init方法来创建空的工程虽然也可以,但是不够安全。因为我们并不知道AppDelegate类在init方法中做了哪些操作,冒然去覆写init方法,可能会导致错误。- (instancetype)init{        self = [super init]; //父类super是UIResponder    if (self) {                self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];        self.window.backgroundColor = [UIColor whiteColor];          UIViewController *rootVC = [[UIViewController alloc]init];         self.window.rootViewController = rootVC; //rootVC.view = nil;是一片漆黑         [self.window makeKeyAndVisible];    }        return self;}

 

结论是:通过重写AppDelegate类的init方法来创建空的工程也是可以的,效果和第一种做法一样。但是还是不建议这么做,总感觉不够安全。 因为我们并不知道AppDelegate类在init方法中做了哪些操作,冒然去覆写init方法,可能会导致错误。

 

转载于:https://www.cnblogs.com/stevenwuzheng/p/5395788.html

你可能感兴趣的文章
EasyUI基础入门之Pagination(分页)
查看>>
一次PHP代码上线遇到的问题
查看>>
显示密码
查看>>
实现one hot encode独热编码的两种方法
查看>>
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>
libvirt log系统分析
查看>>
poj 1068 Parencodings
查看>>
docker 数据卷管理
查看>>
如何让一个div的大小,从某一个特定值开始,随内容的增加而自动变化?
查看>>
P1977 出租车拼车(DP)
查看>>