在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值。如下:

[objc] static int hitCount = 0; [/objc]

声明整数hitCount是一个静态变量。和其他常量局部变量不同,静态变量的初始值为0,所以前面显示的初始化是多余的。此外,他们只在程序开始执行时初始化一次,并且在多次调用方法时保存这些数值。

所以编码序列

[objc] -(void)showPage { static int pageCount = 0; …. ++pageCount; …. } [/objc]

可能出现在一个showPage方法中,它用于记录该方法的调用次数。只在程序开始时局部静态变量设置为0,并且在连续调用showPage方法时获得新值。

注意,将pageCount设置为局部静态变量和实例变量之间的区别。对于前一种情况,pageCount能记录调用showPage方法的所有对象打印页面的数目。对于后一种情况,pageCount变量可以计算每个对象的页面数目,因为每个对象都有自己的pageCount副本。

记住只能在定义静态和局部变量的方法中访问这些变量。所以,即使静态变量pageCount,也只能在showPage函数中访问。可以将变量的声明移到所有方法声明的外部(通常放在implementation文件的开始处),这样所有方法都可以访问它们,如:

[objc] #import "Printer.h"

static int pageCount;

@implementation Printer

@end [/objc]

这样,该文件中包含的所有实例或者类方法都可以访问变量pageCount。