- 理论概念学习
- iOS运行原理
- 代码结构分析
- 代码初步实现
一、理论学习
1??.每一个应用程序都有属于自己的UIWindow,继承自UIView
2??.每一个满屏的UIView都由一个UIViewController控制
3??.UIView面临的问题,UIViewController解决
- UIView之间的切换
- 创建销毁UIView,管理它的生命周期
- 给UIView提供数据和图片等
- 监听UIView的事件
二、iOS的运行原理
1??入口点是main函数
2??执行main函数
- main函数中创建一个UIApplication实例,并且开始一个消息循环(main loop)来监听事件。这个UIApplication是一个单例,一个iOS程序对应一个UIApplication,UIApplication是应用程序的象征
- 再创建一个UIApplication的delegate对象,负责监听UIApplication的生命周期
- 当UIApplication的生命周期发生改变时,会给delegate发送不同的消息
三、代码结构分析
1??main函数
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
前两个参数为main函数的参数
第三个参数,传进去nil表示当前的UIApplication对象
第三个参数,传入UIApplication的代理
2??AppDelegate.m文件中的代码分析
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
初始化完成
- (void)applicationWillResignActive:(UIApplication *)application
失去焦点
- (void)applicationDidEnterBackground:(UIApplication *)application
进入后台
- (void)applicationWillEnterForeground:(UIApplication *)application
进去前台
- (void)applicationDidBecomeActive:(UIApplication *)application
获得焦点
- (void)applicationWillTerminate:(UIApplication *)application
程序销毁
分别在UIApplication不同的生命周期,调用不同的委托方法
四、代码初步实现
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (nonatomic, assign) IBOutlet UITextField *qq; @property (nonatomic, assign) IBOutlet UITextField *psw; -(IBAction)login; @end
IBOutlet可以让属性显示在xib文件右击上去
IBAction可以让方法显示在xib文件右击上去
#import "ViewController.h" @interface ViewController () @end @implementation ViewController -(void)login { NSString *qq = _qq.text; NSString *psw = _psw.text; NSLog(@"我的qq是%@,我的密码是%@", qq, psw); //FirstResponder表示第一响应者,resign分发出去 //[_qq resignFirstResponder]; //[_psw resignFirstResponder]; //退出键盘,表示当前ViewController控制的view退出编辑 [self.view endEditing:YES]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end