• 理论概念学习
  • iOS运行原理
  • 代码结构分析
  • 代码初步实现

一、理论学习

1⃣️.每一个应用程序都有属于自己的UIWindow,继承自UIView

2⃣️.每一个满屏的UIView都由一个UIViewController控制

3⃣️.UIView面临的问题,UIViewController解决

  1. UIView之间的切换
  2. 创建销毁UIView,管理它的生命周期
  3. 给UIView提供数据和图片等
  4. 监听UIView的事件

二、iOS的运行原理

1⃣️入口点是main函数

2⃣️执行main函数

  1. main函数中创建一个UIApplication实例,并且开始一个消息循环(main loop)来监听事件。这个UIApplication是一个单例,一个iOS程序对应一个UIApplication,UIApplication是应用程序的象征
  2. 再创建一个UIApplication的delegate对象,负责监听UIApplication的生命周期
  3. 当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

最新文章

  1. 【转】Python 列表排序
  2. 01分数规划POJ2976(简单模板题)
  3. How to Release the Temp LOB Space and Avoid Hitting ORA-1652 (文档 ID 802897.1)
  4. 关于在线查看相关开源源码的网站,包括Android源码
  5. Redis入门(集合)
  6. this,super关键字的使用
  7. 机器学习之python: kNN
  8. em与px的区别 [ 转 ]
  9. delphi datasnap 心跳包
  10. 排列-条件求和(Code)
  11. Silverlight的Socket通信
  12. SQL中的左连接与右连接有什么区别,点解返回值会不同?(转)
  13. 【Xilinx-Petalinux学习】-03-PetaLinux通过eMMC方式启动
  14. svn 要求commit提交必须加注释(日志) hook
  15. 锁开销优化以及 CAS 简单说明
  16. python while for else
  17. 第四章 HTML5概述
  18. ManyToManyField 增加记录
  19. React文档(二)Hello World
  20. 将浏览器的内容复制到Linux的文件里面

热门文章

  1. 采花 flower
  2. 2017最好的JavaScript框架、库和工具 — SitePoint
  3. 负载平衡(cogs 741)
  4. 回文串(bzoj 3676)
  5. 不用框架使用ajax 纯js使用ajax post,get范例及其区别
  6. EOJ Monthly 2018.1 F 最小OR路径
  7. c# automapper 使用
  8. JavaScripts广告轮播图以及定时弹出和定时隐藏广告
  9. 八、Ubuntu安装Tomcat和jdk
  10. Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat找不到)