当前位置:文档之家› Objective-C编程全解(第3版)_附录A

Objective-C编程全解(第3版)_附录A

Objective-C编程全解(第3版)_附录A
Objective-C编程全解(第3版)_附录A

附录A Foundation框架的概要常用类的概要

下面对Foundation框架中常用类的目的和功能进行说明,要注意其中一部分类目前还不支持iOS。随着操作系统的升级,可以使用的类和功能也会不断地更新,最新的信息请参考苹果公司的在线文档。

表中的iOS标记是可以在iOS 5.0中使用的意思。字体加粗的类是本书中介绍过的类。另外类名中带有"Mutable"的是可变类(第9章)。

根类

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

字符串类

NSString

NSMutableString

字符串的类簇。9.2节iOS

NSMutableAttributedString

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

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

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

NSDataDetector是NSRegularExpression的子

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

iOS

NSMutableCharacterSet

Unicode字符的集合类。

集合和辞典

NSMutableArray

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

NSSet

NSMutableSet

集合类,其中的元素是无序的。9.4节iOS NSCountedSet 可变集合类,同一个对象可被存储多次。9.4节iOS

NSMutableOrderedSet 有序集合类,能够存放多个对象,且对象是有序的。但同一个对象只能被存储一次。

NSMutableIndexSet 集合类,其中的元素是被用作数组索引的非负整数。和NSSet没有继承关系。

NSDictionary

NSMutableDictionary

保存键值对的词典类。9.5节iOS

功能和NSMutableDiction一样,但当键值对超过一定

数量或内存吃紧时,它会自动释放一部分元素。

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

9.4节

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

的对象。

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

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

据的指针。

NSHashTable 和NSMutableSet类似的集合类,在GC的情况下可以

保存对象的弱引用。

iOS NSMapTable 和NSMutableDictionary类似的辞典类,在GC的情

况下可以保存对象的弱引用。

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

数据类型

NSMutableData

二进制数据的一个封装。9.3节

NSPurgeableData 执行中可被释放的数据对象。iOS NSNumber 包裹类,用于将整数、浮点数等数值数据作为对象来处

理。9.6节

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

iOS NSNull 表示空的对象的类。9.6节iOS

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

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

NSFormatter NSNumberFormatter 将对象的内容按照指定的格式转换为字符串。主要用在

GUI的控件中。

iOS

内存管理

对象自动施放池的类。第5章

NSGarbageCollector 控制垃圾回收。第6章

日期和时间

NSDate 表示日期和时间的对象。iOS

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

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

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

GUI的控件中。

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

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

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

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

表示打开的文件或通道句柄,并读写数据。NSDirectoryEnumerator 按顺序遍历指定目录中的所有文件的枚举器。iOS

NSStream NSInputStream NSOutputStream 表示程序和文件之间,或程序和其他主机上的程序之间

交换数据用的通道。

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

NSFileCoordinator 管理多个进程和对象同时读写的文件。iOS NSFileVersion 管理文件在特定时间的快照,可以用于解决版本冲突。iOS

提供操作Bundle的接口,可以从Bundle中取出各种

文件和资源。第16章

对象的保存

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

原为原来的对象。13.2节

iOS

NSKeyedUnarchiver NSCoder的子类,可用于创建(释放)带键值(key)

的归档文件。13.2节iOS 以属性列表的形式对对象序列化,或者检查格式等。

13.3节

使JavaScript中的数据格式JSON和Objective-C

对象相互转换。

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

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

线程和锁

线程的生成和控制。19.1节

NSLock 实现线程间互斥的锁。19.2节iOS

提供条件锁的功能。19.2节

NSRecursiveLock 同一个线程可以反复使用的锁。19.2节iOS

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

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

NSOperation

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

NSBlockOperation

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

消息的执行和转发

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

iOS

15.5节

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

iOS

发消息。15.5节

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

iOS

时的输入通道。15.1节

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

iOS

NSUndoManager 用于处理Undo和Redo。15.6节iOS

通知

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

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

NSNotificationQueue 通知中心的缓存队列。15.3节iOS

不同进程间的通知中心。

异常和错误

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

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

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

分布式对象

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

NSMachPort NSMessagePort NSSocketPort 提供和其他线程或进程间的通信通道的类。19.5节

iOS

iOS

NSMachBootstrapServer

NSMessagePortNameServer

NSSocketPortNameServer

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

NSDistantObject

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

NSCoder的子类,为分布式对象转发代理或对象时使用。NSPortMessage 提供低级的对象间通信。

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

被用于表示网络服务。

NSNetServiceBrowser 查找可以使用的网络服务。iOS NSProtocolChecker 被用于限定分布式对象提供的功能于指定的协议。

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

其他类

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

NSProcessInfo 获得关于进程的各种信息。iOS NSLocale 管理本地化的各种信息。16.5节iOS

描述文档的语言信息。

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

NSValueTransformer 将某个值转换为别的表现形式的抽象类,Cocoa绑定的

时候使用。

iOS NSSpellServer 提供拼写检查功能的类。

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

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

其他类的概要

(1)URL相关的操作

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

本书中没有介绍以NSURL...、NSHTTP...开头的类和NSMutableURLRequest、NSCachedURLResponse的功能和使用方法。关于这些类的详细内容请参考苹果公司的文档“URL Loading System”和各个类的文档。要注意的是有一些类还不能用在iOS上。

(2)XML

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

更详细的内容请参考苹果公司的文档“Tree-Based XML Programming Guide for Cocoa”和“Event-Driven XML Programming Guide for Cocoa”以及各个类的文档。

(3)元数据

文件等中附加的计算机可读取的数据(描述数据的数据)叫作元数据。Foundation框架中以NSMetadata开头的所有类都支持Spotlight(Mac电脑上的一项快速、随打即找的桌面搜索功能)。iOS无法利用这个功能。更多内容请参考文档“Spotlight Metadata Attributes Reference”。

(4)谓词

判别真值或假值的函数叫作谓词(predicate)。Foundation框架提供了四个用于指定检索或过滤用的条件的类:NSPredicate、NSComparisonPredicate、NSCompoundPredicate、NSExpression。

关于这几个类的详细内容请参考苹果公司的文档“Predicates Programming Guide”、“Core Data Programming Guide”和各个类的参考文档。

(5)AppleScript

本书中没有详细介绍AppleScript相关的类的使用方法。下面是和AppleScript相关的所有类,iOS无法使用这些类。

类名为https://www.doczj.com/doc/8c1470820.html,mand的所有类。

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

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

类为NSApple...的所有类。

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

常用协议的概要

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

定义了对类的实例进行归档化操作时需要实现的编码和解码方法。协议定义在头文件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协议中定义了获取和释放锁的方法。协议定义在头文件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节中的内容。

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

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

比较

NSComparisonResult被定义为NSInteger,用来表示对象之间的比较结果。使用方法compare:进行比较的时候,如果消息接收者比参数小,则返回NSOrderedAscending,如果消息接收者比参数大,则返回NSOrderedDescending。

enum _NSComparisonResult {

NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending };

typedef NSInteger NSComparisonResult;

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

图形相关的类型和函数

下面说明大小、点、形状等和图形相关的数据类型。Cocoa的数据类型和函数都是以NS开头的,而Core Graphics的数据类型和函数则以CG开头。

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

(1)大小

NSSize的定义如下所示,用来表示矩形的大小。width和height不能是负数。Core Graphics 的构造体CGSize和NSSize的定义一样。

typedef struct _NSSize {

CGFloat width; /*should never be negative */

CGFloat height; /*should never be negative */

}NSSize;

(2)点

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

typedef struct _NSPoint {

CGFloat x;

CGFloat y;

} NSPoint;

(3)矩形

NSRect是用来表示平面上的矩形(图A-1)的结构体,定义如下所示。Cocoa中坐标轴的原点在左下,x轴向右,y轴向上延伸(当然也可以反转过来)。iOS中和Cocoa相反,y轴向下延伸。

图A-1 矩形NSRect的定义

typedef struct _NSRect {

NSPoint origin;

NSSize size;

} NSRect;

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

typedef enum {

NSMinXEdge = 0,

NSMinXEdge = 1,

NSMinXEdge = 2,

NSMinXEdge = 3

} NSRectEdge;

Core Graphics中对应的结构体是CGRect。表示矩形各边的类型是CGRectEdge型,其中的常量名用CG替换NG。

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

extern const NSSize NSZeroSize;

extern const NSPoint NSZeroSize;

extern const NSRect NSZeroSize;

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

CG_EXTERN const CGSize CGSizeZero;

CG_EXTERN const CGPoint CGPointZero;

CG_EXTERN const CGRect CGRectZero;

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

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

CGSize NSSizeToCGSize(NSSize nssize)

NSSize NSSizeFromCGSize(CGSize cgsize)

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

CGPoint NSPointToCGPoint(NSPoint nspoint)

NSPoint NSPointFromCGPoint(CGPoint cgpoint)

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

CGRect NSRectToCGRect(NSRect nsrect)

NSRect NSRectFromCGRect(CGRect cgrect)

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

CGSize CGSizeMake(CGFloat width, CGFloat height)

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

NSPoint NSMakePoint(CGFloat x, CGFloat y)

CGPoint CGPointMake(CGFloat x, CGFloat y)

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

NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h)

NSRect CGRectMake(CGFloat x, CGFloat y, CGFloat w, CGFloat h)

返回包含了指定的位置和大小的矩形结构体。

每个结构体都有比较用的函数。函数的返回值bool实际上是C99中新增的布尔类型的宏定义,也定义了表示真和假的常量值true和false。

BOOL NSEqualSizes(NSSize aSize, NSSize bSize)

bool CGSizeEqualToSize(CGSize size1, CGSize size2)

如果两个尺寸相等则返回真。

BOOL NSEqualPoints(NSPoint aPoint, NSPoint bPoint)

bool CGPointEqualToPoint(CGPoint point1, CGPoint point2)

如果两个点相等则返回真。

BOOL NSEqualSizes(NSSize aSize, NSSize bSize)

bool CGRectEqualToRect(CGRect rect1, CGRect rect2)

如果两个矩形相等则返回真。

每个结构体都有和字符串形式进行互相转换的函数。

NSString *NSStringFromSize(NSSize aSize)

以"{w,h}"的格式返回aSize的值。

NSSizeFromString():根据字符串指定的内容,返回一个NSSize结构体。

NSString *NSStringFromPoint(NSPoint aPoint)

以"{x,y}"的格式返回aPoint的值。

NSPointFromString():根据字符串指定的内容,返回一个NSPoint结构体。

NSString *NSStringFromRect(NSRect aRect)

以"{{x,y},{w,h}}"的格式返回aRect的值。

NSRect FromString():根据字符串指定的内容,返回一个NSRect结构体。

下面是矩形的相关函数。

CGFloat NSHeight(NSRect aRect)

CGFloat CGRectGetHeight(CGRect rect)

返回矩形的高度。

CGFloat NSWidth(NSRect aRect)

CGFloat CGRectGetWidth(CGRect rect)

返回矩形的宽度。

CGFloat NSMaxX(NSRect aRect)

CGFloat CGRectGetMaxX(CGRect rect)

返回矩形顶点中x坐标的最大值。

CGFloat NSMaxY(NSRect aRect)

CGFloat CGRectGetMaxY(CGRect rect)

返回矩形顶点中y坐标的最大值。

CGFloat NSMinX(NSRect aRect)

CGFloat CGRectGetMinX(CGRect rect)

返回矩形顶点中x坐标的最小值。

CGFloat NSMinY(NSRect aRect)

CGFloat CGRectGetMinY(CGRect rect)

返回矩形顶点中y坐标的最小值。

CGFloat NSMidX(NSRect aRect)

CGFloat NSRectGetMidX(NSRect aRect)

返回矩形在x轴方向的中心点。

CGFloat NSMidY(NSRect aRect)

CGFloat NSRectGetMidY(NSRect aRect)

返回矩形在y轴方向的中心点。

BOOL NSIsEmptyRect(NSRect aRect)

bool CGRectIsEmpty(CGRect rect)

如果参数指定的矩形的高度或者宽度是0或负数,则返回真。

BOOL NSContainsRect(NSRect aRect, NSRect bRect)

bool CGRectContainsRect(CGRect aRect, CGRect bRect)

如果矩形aRect完全包含bRect,则返回真。

BOOL NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped)

如果aPoint指定的点在aRect指定的矩形内,则返回YES。坐标系反转(y轴向下)的情况下,将参数flipped设为YES。

图A-1(b)是正常的坐标系,(c)是反转的坐标系。图中实线的长方形边被认为在矩形内,虚线的长方形边被认为在矩形外。

BOOL NSPointInRect(NSPoint aPoint, NSRect aRect)

bool CGRectContainsPoint(CGRect rect, CGPoint point)

坐标系反转的情况的下判断方法和NSMouseInRect()一样,也就相当于图A-1(c)的情况。要注意的是两个函数的参数的顺序是相反的。

NSRect NSUnionRect(NSRect r1, NSRect r2)

CGRect CGRectUnion(CGRect r1, CGRect r2)

返回完全包含矩形r1和r2的最小的矩形。

NSRect NSIntersectionRect(NSRect r1, NSRect r2)

CGRect CGRectIntersection(CGRect r1, CGRect r2)

返回两个矩形重合的部分。如果没有重合的部分,或只有点或边重合,函数NSIntersectionRect 会返回以原点为中心长和宽都为0的矩形,函数CGRectIntersection()则会返回表示矩形不存在的常量CGRectNull。可以用函数CGRectIsNull()来判断返回值是否为CGRectNull。

BOOL NSintersectsRect(NSRect r1, NSRect r2)

bool CGRectIntersectsRect(CGRect r1, CGRect r2)

如果两个矩形r1和r2有重合的部分,则返回真。

NSRect NSInsetRect(NSRect rect, CGFloat dx, CGFloat dy)

CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)

在rect的基础上,将与y轴平行的两条边分别向内缩小dx,与x轴平行的两条边分别向内缩小dy,返回一个新矩形。

NSRect NSIntegralRect(NSRect rect)

CGRect CGRectIntegral(CGRect rect)

返回一个新矩形,新矩形由原矩形扩展而来,新矩形的4个变量(x,y,width,height)由原矩形中所对应的值向上取整构成。

NSRect NSOffsetRect(NSRect rect, CGFloat dx, CGFloat dy)

CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy)

把原矩形沿x轴方向平移dx,沿y轴方向平移dy,返回一个新矩形。

void NSDivideRect(NSRect rect, NSRect *slice,

NSRect *remainder, CGFloat amount,

NSRectEdge edge)

void CGRectDivide(CGRect rect, CGRect *slice,

CGRect *remainder, CGFloat amount,

CGRectEdge edge)

将rect指定的矩形用edge指定的边进行分割,返回两个新的矩形slice和remainder。矩形slice的大小由距离edge的距离amount来指定。

范围

结构体NSRange的定义如下所示,用来表示队列中的范围。表示范围的计算是从0开始的。以下介绍的函数和结构体都定义在Foundation/NSRange.h中。

typedef struct _NSRange {

NSUInteger location;

NSUInteger length;

} NSRange;

Core Foundation中也有和NSRange类似的结构体叫作CFRange,和NSRange不同的是CFRange 中location和length的类型是有符号的CFIndex。CFRange定义在头文件CoreFoundation/CFBase.h 中。

typedef struct {

CFIndex location;

CFIndex length;

} CFRange;

下面我们说明一下和范围相关的函数。CFRange可用的函数比较少,绝大多数都是NSRange 的函数。

NSRange NSMakeRange(NSUInteger loc, NSUInteger len)

CFRange CFRangeMake(CFIndex loc, CFIndex len)

用指定的位置和长度生成一个范围。

BOOL NSEqualRanges(NSRange range1, NSRange range2)

如果范围range1和range2的位置和长度都相同,则返回YES。

BOOL NSLocationInRange(NSUInteger index, NSRange aRange)

如果index指定的索引在aRange指定的范围之内,也就是说index大于aRange.location 并且小于aRange.location + aRange.length,则返回YES。

NSUInteger NSMaxRange(NSRange range)

返回range.location + range.length,也就是范围内的最大值加1。

NSRange NSIntersectionRange(NSRange range1, NSRange range2)

返回范围range1和range2重合的部分。如果没有任何重合部分,则length为0。

NSRange NSUnionRange(NSRange range1, NSRange range2)

返回包含range1和range2的最小范围。

NSString *NSStringFromRange(NSRange aRange)

将aRange以"{loc,Ing}"形式的字符串返回。

NSRangeFromString()是上面的逆向转换函数,可从字符串生成一个NSRange的范围。类名和选择器名

Class NSClassFromString(NSString *aClassName)

返回类名为aClassName的类对象。如果这个类还没有被加载,则返回nil。

NSString *NSStringFromClass(Class aClass)

以字符串的形式返回类aClass的名字。

SEL NSSelectorFromString(NSString *aSelectorName)

返回名为aSelectorName的选择器,如果不存在,则返回0。

NSString *NSStringFromSelector(SEL aSelector)

以字符串的形式返回aSelector指定的选择器的名字。

用户信息

以下函数都定义在头文件Foundation/NSPathUtilities.h中。

NSString *NSUserName(void)

返回当前用户的用户名。

NSString *NSFullUserName(void)

返回当前用户的全名。

NSString *NSHomeDirector(void)

返回当前用户的根目录的路径。

NSString *NSHomeDirectoryForUser(NSString *userName)

返回userName指定的用户的根目录的路径。

日志信息

void NSLog(NSString *format, ...)

将指定的日志信息输出到标准错误输出stderr中。输出日志信息的时候会在指定的字符串前面自动添加时间戳和进程ID。Format中会指定printf()形式的格式字符串,之后紧跟格式指定符对应的变量,中间用逗号分隔。

void NSLogv(NSString *format, va_list args)

将指定的日志信息输出到标准错误输出stderr中。为参数args传入可变的参数列表。

字符串编码

NSStringEncoding表示字符串的编码类型,定义在Foundation/NSString.h中。

typedef NSUInteger NSStringEncoding;

一些常用的NSStringEncoding常量如下表所示:

表A-1 文字编码常量

这里没有介绍Core Foundation中用来表示字符串的类CFString的编码类型,更多内容请参考参考文档。

字节序

根据数据被保存到内存中的时候是高位在前还是低位在前,字节序可分为PowerPC和Motorola CPU用的大头序(big endian)和Intel CPU用的小头序(little endian)。虽然通常在编程的时候并不必须了解字节序,但处理底层输入输出的时候则需要了解字节序变换的相关知识。

大头序相关的函数和常量定义在头文件Foundation/NSByteOrder.h中。

unsigned int NSHostByteOrder(void)

返回当前机器的字节序。字节序可以为下面的几个常量。

NS_UnknownByteOrder

NS_LittleEndian

NS_BigEndian

NSSwappedDouble NSSwapDouble(NSSwappedDouble x)

改变double类型的数据的字节序。NSSwappedDouble是用来存放数据的结构体。

double NSSwapBigDoubleToHost(NSSwappedDouble x)

将大头序的double类型的数据转换为本机字节序的数据。需要转换时可调用NSSwapDouble()。

NSSwappedDouble NSSwapHostDoubleToBig(double x)

将double类型的数据转换为大头序。需要转换时可调用NSSwapDouble()。

同样,float、short、int、long、long long等各种类型的数值变量也都有相应的字节序转换函数(小头序也是如此)。更多详细内容请参考苹果公司文档。

其他

NSDecimal

用来表示十进制数的结构体,也存在使用该结构体进行计算和比较的函数。定义在头文件Foundation/NSDecimal.h中。更多详细内容请参考苹果公司文档。

NSNotFound

当没有检索到相应的内容时,该常量会被作为检索函数或函数的返回值返回。

NSTimeInterval

表示秒的一个实数。可以表示10,000年以上的范围,精度到毫秒。定义在头文件Foundation/NSDate.h中。

整数的最大值和最小值

NSInteger的最大值最小值、NSUInteger的最大值的定义如下所示。

#define NSIntegerMax LONG_MAX

#define NSIntegerMin LONG_MIN

#define NSIntegerMax ULONG_MAX

相关主题
文本预览
相关文档 最新文档