ObjectiveC编程全解第3版附录A讲述.docx

上传人:b****6 文档编号:5095945 上传时间:2022-12-13 格式:DOCX 页数:25 大小:29.22KB
下载 相关 举报
ObjectiveC编程全解第3版附录A讲述.docx_第1页
第1页 / 共25页
ObjectiveC编程全解第3版附录A讲述.docx_第2页
第2页 / 共25页
ObjectiveC编程全解第3版附录A讲述.docx_第3页
第3页 / 共25页
ObjectiveC编程全解第3版附录A讲述.docx_第4页
第4页 / 共25页
ObjectiveC编程全解第3版附录A讲述.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

ObjectiveC编程全解第3版附录A讲述.docx

《ObjectiveC编程全解第3版附录A讲述.docx》由会员分享,可在线阅读,更多相关《ObjectiveC编程全解第3版附录A讲述.docx(25页珍藏版)》请在冰豆网上搜索。

ObjectiveC编程全解第3版附录A讲述.docx

ObjectiveC编程全解第3版附录A讲述

附录AFoundation框架的概要

常用类的概要

下面对Foundation框架中常用类的目的和功能进行说明,要注意其中一部分类目前还不支持iOS。

随着操作系统的升级,可以使用的类和功能也会不断地更新,最新的信息请参考苹果公司的在线文档。

表中的iOS标记是可以在iOS5.0中使用的意思。

字体加粗的类是本书中介绍过的类。

另外类名中带有"Mutable"的是可变类(第9章)。

根类

NSObject

定义了每个对象基本功能的类。

第8章

iOS

字符串类

NSString

NSMutableString

字符串的类簇。

9.2节

iOS

NSAttributedString

NSMutableAttributedString

带属性的字符串类簇,注意它不是NSString的子类。

iOS

NSScanner

从字符串中提取数字和特定字符串。

iOS

NSRegularExpression

NSDataDetector

使用正则表达式提取指定的字符串。

NSDataDetector是NSRegularExpression的子类,是一个受限的正则匹配类。

iOS

NSCharacterSet

NSMutableCharacterSet

Unicode字符的集合类。

iOS

集合和辞典

NSArray

NSMutableArray

数组类,能够存放多个对象,且对象是有序的。

9.4节

iOS

NSSet

NSMutableSet

集合类,其中的元素是无序的。

9.4节

iOS

NSCountedSet

 

可变集合类,同一个对象可被存储多次。

9.4节

iOS

NSOrderedSet

NSMutableOrderedSet

有序集合类,能够存放多个对象,且对象是有序的。

但同一个对象只能被存储一次。

NSIndexSet

NSMutableIndexSet

集合类,其中的元素是被用作数组索引的非负整数。

和NSSet没有继承关系。

iOS

NSDictionary

NSMutableDictionary

保存键值对的词典类。

9.5节

iOS

NSCache

功能和NSMutableDiction一样,但当键值对超过一定数量或内存吃紧时,它会自动释放一部分元素。

iOS

NSEnumerator

按顺序访问数组或辞典等集合的枚举器,是一个抽象类。

9.4节

iOS

NSIndexPath

表示嵌套数组(数组的成员是另外一个数组)的索引路径的对象。

iOS

NSSortDescriptor

描述数组排序方法相关属性的对象。

iOS

NSPointerArray

指针数组,不仅仅可以存放对象,还可以存放指向任意数据的指针。

iOS

NSHashTable

和NSMutableSet类似的集合类,在GC的情况下可以保存对象的弱引用。

iOS

NSMapTable

和NSMutableDictionary类似的辞典类,在GC的情况下可以保存对象的弱引用。

iOS

NSPointerFunctions

保存集合类中使用的指针。

iOS

数据类型

NSData

NSMutableData

二进制数据的一个封装。

9.3节

iOS

NSPurgeableData

执行中可被释放的数据对象。

iOS

NSNumber

包裹类,用于将整数、浮点数等数值数据作为对象来处理。

9.6节

iOS

NSValue

能够存储指针和结构体等,并将其作为对象处理。

9.6节

iOS

NSNull

表示空的对象的类。

9.6节

iOS

NSDecimalNumber

用于十进制计算的十进制数对象。

iOS

NSDecimaNumberHandler

指定十进制数计算的精度和四舍五入等规则。

iOS

NSFormatter

NSNumberFormatter

将对象的内容按照指定的格式转换为字符串。

主要用在GUI的控件中。

iOS

内存管理

NSAutoreleasePool

对象自动施放池的类。

第5章

iOS

NSGarbageCollector

控制垃圾回收。

第6章

日期和时间

NSDate

表示日期和时间的对象。

iOS

NSDateComponents

可以用年、月、日、时、分、秒等元素表示时间。

iOS

NSCalendar

表示基于各时区或历法的日历。

iOS

NSTimeZone

表示时区。

iOS

NSDateFormatter

将对象内容按照指定的格式转换为字符串的类。

主要用在GUI的控件中。

iOS

文件操作和数据的输入输出

NSURL

表示资源存放位置的URL类。

9.7节

iOS

NSFileWrapper

处理文件或文件夹的包裹类。

iOS

NSFileManager

用于新建、移动、复制文件或文件夹等操作。

iOS

NSFileHandle

表示打开的文件或通道句柄,并读写数据。

iOS

NSDirectoryEnumerator

按顺序遍历指定目录中的所有文件的枚举器。

iOS

NSStream

NSInputStream

NSOutputStream

表示程序和文件之间,或程序和其他主机上的程序之间交换数据用的通道。

iOS

NSPipe

管理进程之间交换数据用的管道。

iOS

NSFileCoordinator

管理多个进程和对象同时读写的文件。

iOS

NSFileVersion

管理文件在特定时间的快照,可以用于解决版本冲突。

iOS

NSBundle

提供操作Bundle的接口,可以从Bundle中取出各种文件和资源。

第16章

iOS

对象的保存

NSCoder

将对象转换为不依赖于具体计算机的数据形式,或者还原为原来的对象。

13.2节

iOS

NSKeyedArchiver

NSKeyedUnarchiver

NSCoder的子类,可用于创建(释放)带键值(key)的归档文件。

13.2节

iOS

iOS

NSPropertyListSerialization

以属性列表的形式对对象序列化,或者检查格式等。

13.3节

iOS

NSJSONSerialization

使JavaScript中的数据格式JSON和Objective-C对象相互转换。

iOS

NSUserDefaults

从用户默认数据库中读取、设置数据。

16.4节

iOS

NSUbiquitousKeyValueStore

存储由关键字和值组成的小数据到iCloud中。

iOS

线程和锁

NSThread

线程的生成和控制。

19.1节

iOS

NSLock

实现线程间互斥的锁。

19.2节

iOS

NSConditionLock

提供条件锁的功能。

19.2节

iOS

NSRecursiveLock

同一个线程可以反复使用的锁。

19.2节

iOS

NSDistributedLock

限制对多个进程共有资源的访问的锁。

NSCondition

提供POSIX风格的条件变量的功能。

iOS

NSOperation

NSInvocationOperation

NSBlockOperation

将方法调用等独立的操作模块化的类。

19.3节

iOS

NSOperationQueue

NSOperation的实例变量使用的队列。

19.3节

iOS

消息的执行和转发

NSInvocation

存储有关发送消息的信息的对象,可以被用于转发消息。

15.5节

iOS

NSMethodSignature

用于表示方法的参数和返回值的类型信息的对象,被用于转发消息。

15.5节

iOS

NSRunLoop

处理GUI环境中鼠标和键盘的输入事件和对象间通信时的输入通道。

15.1节

iOS

NSTimer

定时器,超时之后会发送指定的消息给某个对象。

15.1节

iOS

NSUndoManager

用于处理Undo和Redo。

15.6节

iOS

通知

NSNotificationCenter

提供给多个对象发送通知消息的通知中心的功能。

15.3节

iOS

NSNotification

保存所有需要通知的信息。

15.3节

iOS

NSNotificationQueue

通知中心的缓存队列。

15.3节

iOS

NSDistributedNotificationCenter

不同进程间的通知中心。

异常和错误

NSException

在程序中抛出异常,保存处理异常所必备的信息。

第18章

iOS

NSAssertionHandler

断言失败时被调用的函数。

iOS

NSError

保存执行中发生的错误信息。

18.5节

iOS

分布式对象

NSConnection

管理相同或不同主机上进程或线程间的通信。

19.5节

NSPort

NSMachPort

NSMessagePort

NSSocketPort

提供和其他线程或进程间的通信通道的类。

19.5节

iOS

iOS

iOS

NSPortNameServer

NSMachBootstrapServer

NSMessagePortNameServer

NSSocketPortNameServer

分布式对象使用的端口名服务的接口。

NSProxy

NSDistantObject

提供其他对象的代理功能的类。

19.5节

iOS

NSPortCoder

NSCoder的子类,为分布式对象转发代理或对象时使用。

NSPortMessage

提供低级的对象间通信。

NSDistantObjectRequest

被用于对象间的方法调用。

NSNetService

被用于表示网络服务。

iOS

NSNetServiceBrowser

查找可以使用的网络服务。

iOS

NSProtocolChecker

被用于限定分布式对象提供的功能于指定的协议。

NSHost

被用于获取、保存计算机名和网络地址。

其他类

NSTask

将指定的程序作为子进程启动并监视。

NSProcessInfo

获得关于进程的各种信息。

iOS

NSLocale

管理本地化的各种信息。

16.5节

iOS

NSOrthography

描述文档的语言信息。

iOS

NSLinguisticTagger

将自然语言分词并加上标签。

iOS

NSValueTransformer

将某个值转换为别的表现形式的抽象类,Cocoa绑定的时候使用。

iOS

NSSpellServer

提供拼写检查功能的类。

NSTextCheckingResult

表示拼写检查的结果的类。

iOS

NSAffineTransform

对图形生成、结合、应用Affine变换。

其他类的概要

(1)URL相关的操作

NSURL是用于表示资源URL的类(见9.7节)。

本书中没有介绍以NSURL...、NSHTTP...开头的类和NSMutableURLRequest、NSCachedURLResponse的功能和使用方法。

关于这些类的详细内容请参考苹果公司的文档“URLLoadingSystem”和各个类的文档。

要注意的是有一些类还不能用在iOS上。

(2)XML

Foundation框架提供了读取、操作XML的类(以NSXML开头),本书中没有介绍这些类的功能和使用方法。

这些类中的很多都无法在iOS上使用。

更详细的内容请参考苹果公司的文档“Tree-BasedXMLProgrammingGuideforCocoa”和“Event-DrivenXMLProgrammingGuideforCocoa”以及各个类的文档。

(3)元数据

文件等中附加的计算机可读取的数据(描述数据的数据)叫作元数据。

Foundation框架中以NSMetadata开头的所有类都支持Spotlight(Mac电脑上的一项快速、随打即找的桌面搜索功能)。

iOS无法利用这个功能。

更多内容请参考文档“SpotlightMetadataAttributesReference”。

(4)谓词

判别真值或假值的函数叫作谓词(predicate)。

Foundation框架提供了四个用于指定检索或过滤用的条件的类:

NSPredicate、NSComparisonPredicate、NSCompoundPredicate、NSExpression。

关于这几个类的详细内容请参考苹果公司的文档“PredicatesProgrammingGuide”、“CoreDataProgrammingGuide”和各个类的参考文档。

(5)AppleScript

本书中没有详细介绍AppleScript相关的类的使用方法。

下面是和AppleScript相关的所有类,iOS无法使用这些类。

类名为NS...Command的所有类。

类名为NS...Specifier的所有类。

类名为NSApple...的所有类。

类为NSApple...的所有类。

更详细的内容请参考苹果公司的文档“CocoaScriptingGuide”和各个类的参考文档。

常用协议的概要

下面对Foundation框架中常用的协议进行简单的说明,更详细的内容请参考苹果公司的官方文档。

NSCoding

定义了对类的实例进行归档化操作时需要实现的编码和解码方法。

协议定义在头文件Foundation/NSObject.h中(见13.2节)。

NSCopying

定义了复制类的实例对象时需要实现的方法,协议的头文件是Foundation/NSObject.h(见13.1节)。

NSDecimalNumberBehaviors

NSDecimalNumberBehaviors协议中定义了使用NSDecimalNumber计算的时候设定返回值的精度和四舍五入的标准的方法。

协议定义在头文件Foundation/NSDecimalNumber.h中。

NSErrorRecoveryAttempting

NSErrorRecoveryAttempting是一个非正式协议,实现这个协议的对象可以从错误状态恢复。

协议定义在头文件Foundation/NSError.h中(见17.6节)。

NSFastEnumeration

NSFastEnumeration协议中定义了提供快速枚举功能所需要用到的方法。

协议定义在头文件Foundation/NSEnumerator.h中。

NSKeyValueCoding(非正式协议)

NSKeyValueCoding协议中定义了KeyValueCoding用的方法。

协议定义在头文件Foundation/NSKeyValueCoding.h中(见20.1节)。

NSKeyValueObserving(非正式协议)

NSKeyValueObserving协议中定义了监视Key和Value的方法。

协议定义在头文件Foundation/NSKeyValueObserving.h中(见20.5节)。

NSLocking

NSLocking协议中定义了获取和释放锁的方法。

协议定义在头文件Foundation/NSLock.h中(见12.1节、19.2节)。

NSMutableCopying

NSMutableCopying协议中定义了为一个对象创建可变副本的方法。

协议定义在头文件Foundation/NSObject.h中(见13.1节)。

NSObject

NSObject协议中定义了提供对象的基本功能的方法。

根类NSObject和NSproxy符合这个协议。

协议定义在头文件Foundation/NSObject.h中(见12.2节、19.5节)。

除了以上介绍的这些协议外,协议名为类名+Delegate的协议中都定义了将类的实例作为委托时委托端需要实现的方法(见15.2节)。

除此之外,Foundation框架中还定义了各个类协同工作时需要的协议,详细内容请参考类的参考文档。

主要的函数和类型

下面对Foundation框架中主要的函数、宏和数据类型进行说明。

本节中不再说明一般编程时用不到的、和运行时系统相关的函数。

assertion宏的详细内容请参考18.4节中的内容。

在说明函数和类型的时候,也会涉及一些CoreFoundation、CoreGraphics中的内容。

没指明头文件的函数和类型都定义在Foundation/NSObject.h或者Foundation/NSObjCRuntime.h中,程序不需要导入特别的头文件就可以直接使用这些对象。

和CoreFoundation关联的函数和类型都定义在CoreFoundation/CoreFoundation.h中,可通过Foundation/Foundation.h读取这一文件。

比较

NSComparisonResult被定义为NSInteger,用来表示对象之间的比较结果。

使用方法compare:

进行比较的时候,如果消息接收者比参数小,则返回NSOrderedAscending,如果消息接收者比参数大,则返回NSOrderedDescending。

enum_NSComparisonResult{

NSOrderedAscending=-1,NSOrderedSame,NSOrderedDescending

};

typedefNSIntegerNSComparisonResult;

CoreFoundation中也定义了表示比较结果的CFComparisonResult,且CFComparisonResult也是整数类型。

图形相关的类型和函数

下面说明大小、点、形状等和图形相关的数据类型。

Cocoa的数据类型和函数都是以NS开头的,而CoreGraphics的数据类型和函数则以CG开头。

开发面向MacOSX的应用程序时,下面提到的类型和函数的定义都包含在头文件Foundation/NSGeometry.h中,可以通过加载Foundation/Foundation.h来使用这些类型和函数。

而开发iOS的应用程序时,这些类的定义都包含在CoreGraphics/CGGeometry.h中,可以通过UIKit/UIKit.h加载进来。

(1)大小

NSSize的定义如下所示,用来表示矩形的大小。

width和height不能是负数。

CoreGraphics的构造体CGSize和NSSize的定义一样。

typedefstruct_NSSize{

CGFloatwidth;/*shouldneverbenegative*/

CGFloatheight;/*shouldneverbenegative*/

}NSSize;

(2)点

NSPoint是用来表示平面上的点的坐标的结构体,其定义如下所示。

CoreGraphics中对应的是CGPoint。

typedefstruct_NSPoint{

CGFloatx;

CGFloaty;

}NSPoint;

(3)矩形

NSRect是用来表示平面上的矩形(图A-1)的结构体,定义如下所示。

Cocoa中坐标轴的原点在左下,x轴向右,y轴向上延伸(当然也可以反转过来)。

iOS中和Cocoa相反,y轴向下延伸。

图A-1矩形NSRect的定义

图中的文字:

領域と辺:

矩形和边

typedefstruct_NSRect{

NSPointorigin;

NSSizesize;

}NSRect;

NSRectEdge类型是枚举型,各个常数表示矩形的各个边。

typedefenum{

NSMinXEdge=0,

NSMinXEdge=1,

NSMinXEdge=2,

NSMinXEdge=3

}NSRectEdge;

CoreGraphics中对应的结构体是CGRect。

表示矩形各边的类型是CGRectEdge型,其中的常量名用CG替换NG。

下面是元素都为0的3个常量结构体,分别表示大小为0、原点(x和y坐标均为0)和以原点为中心、大小为0的矩形。

externconstNSSizeNSZeroSize;

externconstNSPointNSZeroSize;

externconstNSRectNSZeroSize;

CoreGraphics中这三个常量都以CG开头,以Zero结尾(CG_EXTERN就是extern的宏定义)。

CG_EXTERNconstCGSizeCGSizeZero;

CG_EXTERNconstCGPointCGPointZero;

CG_EXTERNconstCGRectCGRectZero;

虽然目前Cocoa环境下的结构体和CoreGraphics中的结构体的定义基本一样,但不能保证未来不发生变化,所以当需要传递信息时,可以使用下述函数。

结构体NSSize和CGSize之间转换用的函数

CGSizeNSSizeToCGSize(NSSizenssize)

NSSizeNSSizeFromCGSize(CGSizecgsize)

结构体NSPoint和CGPoint之间转换用的函数

CGPointNSPointToCGPoint(NSPointnspoint)

NSPointNSPointFromCGPoint(CGPointcgpoint)

结构体NSRect和CGRect之间转换用的函数

CGRectNSRectToCGRect(NSRectnsrect)

NSRectNSRectFromCGRect(CGRectcgrect)

这3个结构体中还定义了生成新的结构体并将其作为函数值返回的函数,如下所示:

NSSizeNSMakeSize(CGFloatwidth,CGFloatheight)

CGSizeCGSizeMake(CGFloatwidth,CGFloatheight)

返回表示尺寸的结构体,结构体中包含了指定的宽和高。

NSPointNSMakePoint(CGFloatx,CGFloaty)

CGPointCGPointMake(CGFloatx,CGFloaty)

返回表示点的结构体,结构体中包含了指定的xy坐标。

NSRectNSMakeRect(CGFloatx,CGFloaty,CGFloatw,CGFloath)

NS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1