天天看點

Cocoa Touch基礎

Cocoa Touch

主要特點:

  • 基于objective-c語言、動态運作時
  • Core Animation:基于組合獨立圖層
  • Core Audio:播放、處理和錄制音頻
  • Core Data:面向對象的資料管了解決方案

Cocoa Touch主要架構

  1. 音頻和視訊:Core Audio、Open AL、Media Library、AV Foundation
  2. 資料管理:Core Data、SQLite
  3. 圖形和動畫:Core Animation、OpenGL ES、Quartz 2D
  4. 網絡:Bonjour、WebKit、BSD Sockets
  5. 使用者應用:Address Book、Core Location、Map Kit、Store Kit

iPhone 技術層構成

Cocoa Touch層 多媒體層 核心服務層 核心OS層
功能描述 為應用程式提供核心功能 建立複雜圖形、播放音頻和視訊、生成實時的三維圖形 通路較低級的作業系統服務如檔案存取、聯網等

最低級的iOS服務

包括線程、複雜數學運算、硬體配件和加密等

關鍵技術

1. 多任務

2. 列印<br

3. 資料保護

4. 蘋果推送通知服務

5. 本地通知

6. 手勢識别

7. 檔案共享

8.點對點對戰服務

9. 标準系統View Controller

10. 外部顯示支援

主要架構

1. UIKit

2. MapKit

3. Message UI / Address Book UI / Event Kit UI

4. iAd

5. Event Kit UI

1. AV Foundation

2. CoreAudio

3. CoreImage

4. CoreGraphics

5. CoreText

6. Image I/O

7. Media Player

8. OpenGLES

9. QuartzCore

1. Accounts

2. Address Book

3. CFNetwork

4. Core Data

5. Core Foundation

6. Foundation

7. EventKit

8. CoreLocation

9. CoreMotion

10. Quick Look

11. StoreKit

12. SystemConfiguration

1. Accelerate

2. Extemal Accessory

3. Security

4. System

Cocoa ——核心類

  • NSObject

    根類是所有類的子類,定義了所有類都有的方法,例如

    alloc

    init

  • UIApplication

    1. 每個程式在運作期有且僅有一個

      UIApplication

      (或其子類)執行個體
    2. 程式開始運作時,

      UIApplicationMain

      函數是程式的進入點,該函數的一個重要工作就是建立一個

      UIApplication

      的單例執行個體可以通過調用

      [UIApplication sharedApplication]

      得到該單例執行個體的指針
    3. 主要工作是處理使用者事件,會開啟一個隊列,把所有使用者事件放入隊列逐個處理。在處理事件時,它會發送目前事件到一個合适處理事件的目标控件。此外,還維護一個在本應用中打開的Window清單(

      UIWindow

      執行個體),以此接觸應用中任何一個

      UIView

      對象。

      UIApplication

      執行個體會被賦予一個代理對象,以處理應用程式生命周期事件、系統事件等
  • UIWindow

    管理和顯示視圖的容器:提供一個區域顯示視圖、将事件

    event

    分發給視圖

    事件産生 --> 放入事件隊列(event queue) --> Application單例取出一個事件分發 --> 關鍵視窗(key window)處理 --> (如果是觸摸事件)通過響應鍊(responder chain)找到處理事件的對象

  • UIView

    定義一塊矩形區域,并管理該區域内的所有螢幕顯示
  • UIResponder

    1. 一個UIResponder類表示一個可以接收事件的對象,UIResponder的執行個體被稱為響應者
    2. 所有顯示在界面上的對象都是從UIResponder直接或間接繼承的
  • UIControl

    UIControl類是從UIView派生而來的,且是幾乎所有螢幕控件的父類,根據觸摸事件觸發操作
  • UIViewController

    提供一個用于顯示View界面,同時包含View加載、解除安裝事件的重定義功能

Cocoa——資料類型類

  • NSString / NSMutableString

    可以使用@符号 如

    myLabel.text = @"xxx";

    初始化字元串
  • NSArray / NSMutableArray

    1. 初始化時總是使用nil來結束對象清單:
    message = [[NSArray alloc] initWithObjects:@"a",@"b",nil];
    [message objectAtIndex:1];
               
    1. NSMutableArray用于建立初始化後可被修改的數組,NSArray建立時包含了所有的對象不能增加或者删除(immutable)
  • NSDictionary / NSMutableDictionary

    "object - key"對存儲,object可以是任何類型,key可以是任何字元串
    message = [[NSDictionary alloc]initWithObjectsAndKeys: @"ob1",@"key1",@"ob2",@"key2",nil];
    [message objectForKey:@"key2"];
               
  • NSNumber / NSDecimalNumber

    用于将C語言中的數字類型存儲為NSNumber對象,這樣可以作為對象加入數組、字典中
    [myNumber = [NSNumber alloc] numberWithInt:100];
               
    NSDecimalNumber 是NSNumber的子類,用于對非常大的數字執行算術運算
  • NSDate

    建立日期對象并對日期進行運算
    myDate = [NSDate date]; //建立目前日期的對象
    [myDate earlierDate: userDate]; //比較這兩個日期哪個更早
               

Cocoa ——UI界面類

作用
UILabel

顯示靜态文本

作為可控制文本塊,必要時進行修改

UIButton 使用者輸入,響應衆多觸摸事件
UISwitch 使用者輸入,收集“開”和“關”響應
UISegmentedControl 可觸摸的長條,包含多個命名的選項,觸摸選項可以激活事件
UISlider 可拖拽的小球,從特定範圍内選取一個值
UIStepper 步進控件類似于滑塊,給一個内部屬性+1或者-1
UITextField / UITextView 用于收集通過鍵盤輸入内容,前者單行,後者多行(且可以包含換行符)
UIDatePicker / UIPicker

通過修改轉盤的每個部分,可以用作多個值的組合,快速輸入日期和時間

通過繼承UIPicker類,還可以建立自己的選擇器

UIPopoverController iPad特有的,能夠在其他視圖上面顯示一個視圖,以便使用者選擇器中的一個選項
UIColor 用于指定cocoa元件的顔色
UITableView 用于顯示清單條目,iPhone中沒有二維表的概念,每一行隻有一個單元格,如果要實作二維表的顯示,則需要重定義每行的單元格,或者并列使用多個TableView。一個tableView至少有一個section,每個section中可以有0行、1行或者多行cell