xcode中用静态成员函数来代替全局变量

objective c支持全局变量,用法和c/c++中相同。但是当我们要求如下时:如在A类里面定义的变量,在B类中不需要创建A类的实例就可访问和修改。
   用全局变量来实现并不合适。此时我们需要做的是在A类的implementation文件中定义一 个static变量,然后为A类定义静态成员函数(class method)来操作该变量。这样在其它类中你就不需要创建A类的实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量, 但是也算达到了同样的效果。为什么不定义全局变量,关键就在于变量的作用域,static变量的作用域被限制在单一的文件中。代码可以如下所示:  
//example.h
@interface Example : NSObject {
}
- (id)init;
+(int)instanceCount;
@end
复制代码
//example.m
#import "example.h"
static int count;
@implementation Example
-(id)init{
    self = [super init];
    if(nil!=self){
        count+=1;
    }
    return self;
}
+(int)instanceCount{
    return count;
}
@end
复制代码
上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。
posted @ 2012-03-16 23:11  与时俱进  阅读(3524)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈