应用程序之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

 

posted @ 2014-03-29 09:21  了透糕糟  阅读(1719)  评论(0编辑  收藏  举报