Cocoa Touch
主要特点:
- 基于objective-c语言、动态运行时
- Core Animation:基于组合独立图层
- Core Audio:播放、处理和录制音频
- Core Data:面向对象的数据管理解决方案
Cocoa Touch主要框架
- 音频和视频:Core Audio、Open AL、Media Library、AV Foundation
- 数据管理:Core Data、SQLite
- 图形和动画:Core Animation、OpenGL ES、Quartz 2D
- 网络:Bonjour、WebKit、BSD Sockets
- 用户应用: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
- 每个程序在运行期有且仅有一个
(或其子类)实例UIApplication
- 程序开始运行时,
函数是程序的进入点,该函数的一个重要工作就是创建一个UIApplicationMain
的单例实例可以通过调用UIApplication
得到该单例实例的指针[UIApplication sharedApplication]
- 主要工作是处理用户事件,会开启一个队列,把所有用户事件放入队列逐个处理。在处理事件时,它会发送当前事件到一个合适处理事件的目标控件。此外,还维护一个在本应用中打开的Window列表(
实例),以此接触应用中任何一个UIWindow
对象。UIView
实例会被赋予一个代理对象,以处理应用程序生命周期事件、系统事件等UIApplication
- 每个程序在运行期有且仅有一个
-
UIWindow
管理和显示视图的容器:提供一个区域显示视图、将事件event
分发给视图
事件产生 --> 放入事件队列(event queue) --> Application单例取出一个事件分发 --> 关键窗口(key window)处理 --> (如果是触摸事件)通过响应链(responder chain)找到处理事件的对象
-
UIView
定义一块矩形区域,并管理该区域内的所有屏幕显示 -
UIResponder
- 一个UIResponder类表示一个可以接收事件的对象,UIResponder的实例被称为响应者
- 所有显示在界面上的对象都是从UIResponder直接或间接继承的
-
UIControl
UIControl类是从UIView派生而来的,且是几乎所有屏幕控件的父类,根据触摸事件触发操作 -
UIViewController
提供一个用于显示View界面,同时包含View加载、卸载事件的重定义功能
Cocoa——数据类型类
-
NSString / NSMutableString
可以使用@符号 如
初始化字符串myLabel.text = @"xxx";
-
NSArray / NSMutableArray
- 初始化时总是使用nil来结束对象列表:
message = [[NSArray alloc] initWithObjects:@"a",@"b",nil]; [message objectAtIndex: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对象,这样可以作为对象加入数组、字典中
NSDecimalNumber 是NSNumber的子类,用于对非常大的数字执行算术运算[myNumber = [NSNumber alloc] numberWithInt:100];
-
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 |