天天看点

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