- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
MainViewController *viewController = [[MainViewController alloc] init];
self.window.rootViewController = viewController;
[viewController release];
return YES;
}
MainViewController 是一个视图控制器,他的父类是UIViewController ;
1. [[MainViewController alloc] init]; 创建一块内存,然后init初始化。
- (id)init
{
self = [super init];
if (self){
}
return self;
}
执行到self = [super init]; 进入方法,将执行这个函数
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
这个方法执行完毕,后回到- (id)init这个方法继续执行if(self)语句,然后初始化完毕。2.self.window.rootViewController = viewController;将视图控制器赋值给window的rootViewController;
=右边,将调用
- (void)loadView
{
UIView *view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
view.backgroundColor = [UIColor blueColor];
self.view = view;
}
因为viewController的view为nil,所以调用这个方法,里面的内容是自己添加的,如果自己不添加,应当写[super loadView],或者干脆就不重写这个方法;
然后就调用 编译器自动生成的
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
然后就是
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
和
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
3.[viewController release]; 引用计数-1;
视图控制器装载完毕。
简单点就是
1、 alloc 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear 视图已在屏幕上渲染完成
当引用计数为0的时候,代码顺序就是
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放