摘要:
Cocoa提供了两个通用的文件处理类:属性列表和对象编码。属性列表在Cocoa中,有一类名为属性列表的对象,常简写为plist。这些列表包含Cocoa知道如何操作的一组对象。具体来讲,Cocoa知道如何将它们保存到文件中并进行加载。属性列表类包括NSArray、NSDictionary、NSString、NSNumber、NSDate和NSData,以及它们的变体。NSDate程序中经常要处理时间和日期。NSDate是Cocoa中用于处理时间和日期的基础类。可以使用[NSDate date]获取当前的日期和时间,它是一个自动释放对象。NSDate *date = [NSDate date];N 阅读全文
摘要:
正式协议与非正式协议一样,正式协议是一个命名的方法列表。但与非正式协议不同的是,正式协议要求显式地采用协议。采用协议的办法是在类的@interface声明中列出协议的名称。此时,你的类遵守该协议。采用协议意味着你承诺实现该协议的所有方法。否则,编译器会通过生成警告来提醒你。正式协议就像Java的接口一样。事实上,Objective-C的协议正是受了Java接口的启发。声明协议下面我们看由Cocoa声明的一个协议--NSCopying。如果你采用了NSCopying协议,你的对象将知道如何复制自己:@protocol NSCopying- (id) copyWithZone:(NSZone *) 阅读全文
摘要:
创建类别类别是一种为现有的类添加新方法的方式。可以为任何类添加新的方法,包括那些你没有源代码的类。模拟:你正在编写一个纵横字谜游戏程序,该程序将接收一系列的字符串,确定每个字符串的长度并将这些字符串的长度存入NSArray或NSDictionary中。你需要先将每个长度包装在一个NSNumber对象中,然后才能将期存入NSArray或NSDictionary中。做多了就会厌烦了吧。相反,你可以为NSString类添加一个类别,该类别可以替你完成这项工作。声明类别类别的声明格式与类的声明格式相似:@interface NSString (NumberConvenience)-(NSString 阅读全文
摘要:
Objective-C2.0中引入了特性(property),它组合了新的预编译指令和新的属性访问器语法。新的特性功能显著减少了必须编写的冗长代码的数量。Objective-C的特性只适用于Leopard或更高版本。特性主要应用于Cocoa的新组件(尤其是华丽夺目的Core Animation效果)。@property是一种新的编译器功能,表示声明了一个新对象的属性。@property float rainHanding;语句表明这是具有float类型的属性,其名称为rainHanding。而且,你可以通过调用-setRainHanding:来设置属性,通过调用-rainHanding来访问属 阅读全文
摘要:
目前为止,两种创建新对象的两种方法:第一种是[类名 new],第二种是[[类名 alloc] init]。这两种方法是等价的,不过,通常的Cocoa惯例是使用alloc和init,而不使用new。分配对象分配(allocation)是一个新对象诞生的过程。从操作系统获得一块内存并将其指定为存放对象的实例变量的位置。向某个类发送alloc消息的结果,就是为该类分配一块足够大的内存,以存放该类的全部实例变量。同时,alloc方法还顺便将这块内存区域全部初始化为0。同于未初始化内存而引起的各种各样的随机bug曾经折磨着许多放言,而alloc方法将分配的内存初始化为0,这样就不用担心此类问题了。所有的 阅读全文