Core Animation
Core Audio
Core Data
- UIKit 负责启动和结束应用程序,控制界面和多触点事件
- Map Kit 提供地图的相关服务,定位或者区域检测等
- Game Kit 创建和使用网络机制
- Message UI/Address Book UI 提供操作电子邮件和联系人的信息
Fundation第二部分
Foundation第三部分
图示解析:
值对象:
值对象封装各种类型数据,提供对数据进行访问和操作的路径,因为他们都是对象,所以可以对它们进行归档、解档。
NSData类为字节流提供面向对象的存储空间
NSValue合NSNumber为简单的数据类型提供面向对象的存储空间,
NSDate NSCalendarDate NSTimeZone NSCanlendar NSDataCompoments 和NSLocale类提供代表时间日期日历和地域设置的对象 其包含的方法可以用于计算日期和时间差,以各种格式显示日期和时间,以及调整世界上各个位置时间和日期
字符串。NSString是另一类值对象,负责为以null结尾的、具有特定编码的字节数组提供面向对象的存储空间。它支持对UTF-16、UTF-8、MacRoman、和很多其它编码的字符串之间进行转换。NSString还提供对字符串进行检索、组合、和比较、以及对文件系统路径进行操作的方法。您可以用NSScanner对象来对NSString对象中的数字和词进行解析。NSCharacterSet(显示在框图中的集合类部分)代表可以在各个NSString和NSScanner方法中使用的一组字符。
集合。集合是以一定的顺序存储和访问其它对象(通常是数值)的对象。NSArray的索引从0开始,NSDictionary使用键-值对,而NSSet则负责对象的随机存储(NSCountedSet类使集合具有唯一标识)。通过NSEnumerator对象,您可以访问一个集合中的元素序列。集合对象是属性列表的必要元素,和其它所有对象一样,它也可以被归档和分发
操作系统服务。 很多Foundation类为访问各种底层的操作系统服务提供便利,同时又把开发者从操作系统的具体特性隔离开来。举例来说,您可以通过NSProcessInfo类查询应用程序运行的环境;通过NSHost类得到主机系统在网络中的名称和地址;通过NSTimer对象,您可以按指定的时间间隔向其它对象发送消息;NSRunLoop可以帮您管理应用程序或其它类型程序的输入源;而NSUserDefaults则为存储全局(主机级别)和用户级缺省值(预置)的系统数据库提供编程接口。
文件系统和URL。 NSFileManager为诸如创建、重命名、删除、和移动文件这样的文件操作提供统一的接口。NSFileHandle则可以进行较为底层的文件操作(比如文件内查找操作)。NSBundle可以寻找存储在程序包中的资源,可以动态装载某些资源(比如nib文件和代码)。您可以用NSURL和NSURLHandle类来表示、访问、和管理源于URL的数据。
进程间通讯。 这个范畴中的大部分类代表不同的系统端口、套接字、和名字服务器,对实现底层的IPC很有用。NSPipe代表一个BSD管道,即一种进程间的单向通讯通道。
线程和子任务。 NSThread类使您可以创建多线程的程序,而各种锁(lock)类则为彼此竞争的线程在访问进程资源时提供各种控制机制。通过NSTask,您的程序可以分出一个子进程来执行其它工作或进行进度监控。
归档和序列化。这个范畴中的类使对象分发和持久保留成为可能。NSCoder及其子类和NSCoding协议一起,可以以独立于架构的方式来表示对象中包含的数据,可以将类信息和数据一起存储。
表达式和条件判断。条件判断类,即NSPredicate、NSCompoundPredicate、和NSComparisonPredicate类,负责对获取或过滤对象的逻辑约束条件进行封装。NSExpression对象则代表条件判断中的表达式。
UIKit主要用于界面架构 类结构如下
常用结构体
在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等
可以看到对于常用结构体在Foundation框架中都有一个对应的make方法进行创建,这也是我们日后比较常用的操作;而且与之对应的还都有一个NSStringFromXX方法来进行字符串转换,方便我们调试。上面也提到NSSize其实就是CGSize,NSRect其实就是CGRect,我们可以通过查看代码进行确认,例如NSSize定义:
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
下一篇将从Fundation的API开始写起。