IOS之第一个IOS程序

之前一直做J2EE开发,没有第一次接触Objective-C,对其语法觉得很奇怪,经过了一个礼拜的学习,终于学完了Objective-C语法,开始了IOS的开发,看传智的OC基础的视频,写完的demo以及IOS程序运行的原理分析简单做笔记如下:

1、每一个应用程序都有一个属于自己的界面UIWindow,UIWindow继承自UIView
UIView:视图,屏幕上所有看得见,摸得着的都是一个UIView
2、UIView面临问题:
(a)UIView之间的切换
(b)管理UIView的生命周期
(c)给UIView装配数据源
 
上面三点有控制器(UIViewController)来完成的

UIViewController:内部默认有个UIView视图,负责管理UIView的生命周期、
装配数据到UIView上显示、处理UIView事件

IOS采用了MVC的设计模式

运行原理:
1、首先执行main函数
2、执行UIApplicationMain函数
3、UIApplicationMain函数内部
UIApplicationMain:第三个参数指定application的类名(或子类),如果为nil,则默认是UIApplication,第四个参数指定代理的类名
1> 创建一个UIApplication实例。这个UIApplication是个单例的,一个IOS程序对应一个UIApplication对象
2> UIApplication对象是应用程序的象征
3> 开启一个消息循环(main loop):用于监听手机上面的事件
4> 再创建一个UIApplication的delegate对象,负责监听UIApplication的生命周期

5> 当UIApplication的生命周期发生改变时,会给delegate发送不同的消息
* 当第一次运行程序的时候:
didFinishLaunchingWithOptions(加载完毕)->
applicationDidBecomeActive(获取焦点)->
* 当点击HOME键的时候:
applicationWillResignActive(失去焦点)->
applicationDidEnterBackground(进入后台)
* 当再次点击应用图标,重新进入应用时
applicationWillEnterForeground(进入前台)->
applicationDidBecomeActive(获取焦点)

创建一个IOS项目
#import "GPBAppDelegate.h"
#import "GPBViewController.h"
@implementation GPBAppDelegate

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}
#pragma mark 应用程序加载完毕之后调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"didFinishLaunchingWithOptions->加载完毕");
    //初始化一个窗口
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    //传入xib 文件名,来初始化yige控制器
    self.viewController = [[[GPBViewController alloc] initWithNibName:@"GPBViewController" bundle:nil] autorelease];
    //设置窗口的根控制器
    self.window.rootViewController = self.viewController;
   
   
    //窗口不会默认显示,需要调用方法显示
    //keyWindow是主窗口,只有主窗口才能和用户交互
    [self.window makeKeyAndVisible];
   // self.window.hidden = NO;
    return YES;
}

#pragma mark 程序失去焦点的时候调用(不跟用户交互了)
- (void)applicationWillResignActive:(UIApplication *)application
{
    NSLog(@"applicationWillResignActive->失去焦点");
   }
#pragma mark 当应用程序进入后台的时候调用(点击HOME键)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSLog(@"applicationDidEnterBackground->进入后台");
}
#pragma mark 当应用程序进入前台的时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"applicationWillEnterForeground->进入前台");
}
#pragma mark 当应用程序获取焦点的时候调用
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"applicationDidBecomeActive->获取焦点");
}
#pragma mark 程序被在某些情况下被终结的时候被调用
- (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"applicationWillTerminate->终结");
}

@end

GPBViewController.m文件:
#import "GPBViewController.h"

@interface GPBViewController ()
@end

@implementation GPBViewController

- (IBAction)login{
    NSString *name = _name.text;
    NSString *pwd = _pwd.text;
   
    NSLog(@"name=%@, password=%@", name, pwd);
    //调出键盘的那个视图是第一响应者(firstResponder)
    //代表这个视图,不想当第一响应者了,于是键盘退出
  //  [_name resignFirstResponder];
   // [_pwd resignFirstResponder];
   
    //如果第一响应者存在self.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

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Love_JavaProgram/article/details/9672229
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭