Application加载ViewController过程探究
来源:互联网 发布:萌叔装机 知乎 编辑:程序博客网 时间:2024/05/16 06:45
@autoreleasepool {
returnUIApplicationMain(argc, argv, nil,NSStringFromClass([AppDelegateclass]));
}
@autoreleasepool {
UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow.
iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了.
让我们来看一下应用的delegate文件, 打开AppDelegate.h, 你将会看到如下内容:
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
要使用Storyboard,你的应用代理对象就必须继承UIResponder(以前都是直接继承自NSObject),并且还有一个UIWindow属性(和以前相比,这个属性不再是一个IBOutlet)。
如果你再看一下 AppDelegate.m , 你会发现它没有做任何事情, 所有的方法都是空的。 即使是 application:didFinishLaunchingWithOptions: 方法, 也只不过简单的返回了一个YES。 在以前,这里会把主视图控制器的视图添加到window上面,或者将window设置到rootViewController属性上面,但是现在,这些都 不需要了。
Storyboard应用会使用一个叫做UIMainStoryboardFile的键,或者叫做“Main storyboard file base name”, 来指定应用启动时要加载的Storyboard名称。 当检测到这个设置后,UIApplication将会加载 MainStoryboard.storyboard 文件,并且自动实例化其中的第一个视图控制器, 同时把它的所有视图放到一个新的UIWindow对象中。 不需要写任何代码。
这里面有一个新的iPhone/iPod Deployment Info选项让你来选择是使用Storyboard还是nib文件来启动应用。
为了保持教程的完整性,让我们再来看看main.m里面有什么:
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char *argv[]){ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
在以前 UIApplicationMain() 函数的最后一个参数是一个nil值,现在他是NSStringFromClass([AppDelegate class])。
- Application加载ViewController过程探究
- viewController详解,加载过程以及生命周期
- 对于Java类加载过程中的顺序问题探究
- 浅论ViewController的加载
- 浅论ViewController的加载
- 浅论ViewController的加载
- viewController的加载顺序
- ViewController的加载顺序
- ViewController的加载方式
- 一个ViewController不能加载
- 浅论ViewController的加载
- iOS个人整理05-应用程序的启动流程--视图控制器ViewController的加载过程--MVC架构
- 谈谈viewController的加载函数
- ViewController的加载的生命周期
- swift 加载xib的ViewController
- storyboard加载viewcontroller protocol实现
- iOS Application 和 ViewController的生命周期
- ViewController的View创建过程
- 活动选择
- maven错误事例之一
- 现代控制理论课件分享及课后思考题(初稿待完善)
- 【模拟】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
- 输出随机认证码图片
- Application加载ViewController过程探究
- android软键盘弹出引起的各种不适终极解决方案
- 坐标移动
- 详解 Java ClassLoader
- Git学习(1)
- dotNet微信公众号开发二:接收并回复普通文字消息
- Nginx配置引起的SSL证书认证失败
- powerdesigner 16.5使用教程
- c++作业2