zoukankan      html  css  js  c++  java
  • 应用程序之SingleViewApplication

    • 理论概念学习
    • 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
  • 相关阅读:
    120.三角形最短路径(leetcode)
    Python Pycharm中灵活运用debugger
    POJ 1284
    POJ 2407
    POJ 1811
    HDU 1164
    HDU 4228
    HDU 2521
    HDU 4133
    ZOJ 2562 反素数
  • 原文地址:https://www.cnblogs.com/letougaozao/p/3632135.html
Copyright © 2011-2022 走看看