应用程序之SingleViewApplication
2024-08-27 06:47:30
- 理论概念学习
- 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
最新文章
- 【转】Python 列表排序
- 01分数规划POJ2976(简单模板题)
- How to Release the Temp LOB Space and Avoid Hitting ORA-1652 (文档 ID 802897.1)
- 关于在线查看相关开源源码的网站,包括Android源码
- Redis入门(集合)
- this,super关键字的使用
- 机器学习之python: kNN
- em与px的区别 [ 转 ]
- delphi datasnap 心跳包
- 排列-条件求和(Code)
- Silverlight的Socket通信
- SQL中的左连接与右连接有什么区别,点解返回值会不同?(转)
- 【Xilinx-Petalinux学习】-03-PetaLinux通过eMMC方式启动
- svn 要求commit提交必须加注释(日志) hook
- 锁开销优化以及 CAS 简单说明
- python while for else
- 第四章 HTML5概述
- ManyToManyField 增加记录
- React文档(二)Hello World
- 将浏览器的内容复制到Linux的文件里面
热门文章
- 采花 flower
- 2017最好的JavaScript框架、库和工具 — SitePoint
- 负载平衡(cogs 741)
- 回文串(bzoj 3676)
- 不用框架使用ajax 纯js使用ajax post,get范例及其区别
- EOJ Monthly 2018.1 F 最小OR路径
- c# automapper 使用
- JavaScripts广告轮播图以及定时弹出和定时隐藏广告
- 八、Ubuntu安装Tomcat和jdk
- Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat找不到)