本章讲述了很多关于class的关键内容。
1. 首先讲述了分离.h和.m文件
2. 讲述了自动生成setter和getter方法
使用@property和@synthesize
在.h文件中使用
@property int a, b
在.m文件中使用
@synthesize a, b;
即可直接使用
instance.property
instance.property = value访问实例变量
注意:
1)如果省略@synthesize, 则默认程序会自动生成两个_a, _b供.m文件使用
2)点运算符通常不用在方法调用上,方法调用推荐使用[instance method:argument]的方式
3. 多参数方法
多参数方法以为着方法名有多个
可以如下这样写:
[myFraction setNumber:1 andDenominator: 3];
或者
[myFraction setTo: 1 over:3];
也可以省略参数名:
- (int) set: (int) n: (int) d;
但是不推荐省略,会是程序可读性降低。
- (void) add: (Fraction *f)
本地变量作用于只在本地。
参数是一种本地变量,通常普通参数在执行的时候会把实际值copy给参数。
所以参数的值不会被函数改变。
但是例外是如果参数是对象,则对象会被改变,因为对象参数是实际对象的引用。
6. static关键字
static关键字同c语言。意思是在函数内部定义的静态变量的值会在函数多次被调用时保存下来。它只在函数第一次调用的时候才被初始化。
7. self关键字
这是一个很关键的关键字。
记住:self是指向the object that is the receiver of the current message。
self指向那个接受消息的对象。
如:
- (void) add: (Fraction *) f
{
// To add two fractions:
// a/b + c/d = ((a*d) + (b*c)) / (b * d)
numerator = numerator * f.denominator + denominator * f.numerator;
denominator = denominator * f.denominator;
[self reduce];
}
[aFraction add: bFraction];
这里的self 是指向aFraction的。aFraction是add消息的接受者。
8. 返回一个新对象的方法可以理解为一个工厂方法。