2011年8月17日

摘要: 默认的动态行为:对象是动态类型推断的只有在运行时才分配内存消息是动态绑定的,对象只能执行它所理解的消息”方法调用“虽然动态执行让程序变得灵活,但是也少了编译时的类型检查,你可以使用静态类型来进行编译时检查。Rectangle *thisObject = [[Square alloc] init];象这样指定类型,基本上只影响到编译时的检查,其它的行为跟 typed as id 是一样的。好处;1。 静态类型检查2。显式的方法参数类型与返回值。3。允许你使用 structure pointer 直接访问对象的实例变量。使用静态类型后,如果一个对象没有响应一个它应该响应的消息,那么会报错把一个静态 阅读全文
posted @ 2011-08-17 15:49 沙加 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 快速枚举使用的语法:for ( TypenewVariable in expression ) { statements }orTypeexistingItem;for ( existingItem in expression ) { statements }枚举期间对象不能被改变。使用快速枚举的三个类:NSArray, NSDictionary, NSSet如何使用:NSArray *array = [NSArray arrayWithObjects: @"One", @"Two", @"Three", @"Four&qu 阅读全文
posted @ 2011-08-17 15:27 沙加 阅读(1726) 评论(0) 推荐(0) 编辑
摘要: 上一章讲了对类的方法进行扩展, 相关引用就是为现存的 class 增加另外的实例可引用变量(通常是一个静态变量),这个功能只在 iOS and OS X v10.6 以后提供。引入这种机制的原因类同于类的方法扩展。static char overviewKey;NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];// For the purposes of illustration, use initWithFormat: t 阅读全文
posted @ 2011-08-17 15:08 沙加 阅读(379) 评论(0) 推荐(0) 编辑
摘要: category 下称类别允许你甚至在没有类源码的情况下扩展一个类的功能,给它增加方法。** 这个可以理解为 "mixin" 的一种机制。主要作用是使相同的方法在没有继承关的类中复用。要使用它需要在类的@interface 文件中的category 处指名方法的名并在对应的实现文件中编写代码。但是不能使用 category 为类添加新的实例变量。category 只是一种编译时手段,定义在里面的方法与类的实例方法在运行时没有任何的不同。#import "ClassName.h"@interface ClassName ( CategoryName )// 阅读全文
posted @ 2011-08-17 14:49 沙加 阅读(2690) 评论(0) 推荐(0) 编辑

导航