IOS之第一個IOS程式

來源:互聯網
上載者:User

之前一直做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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.