现在的位置: 首页 > 综合 > 正文

oc 定义静态变量

2017年08月13日 ⁄ 综合 ⁄ 共 795字 ⁄ 字号 评论关闭

        和c++一样,objective c中静态变量使用static关键字进行定义。例如:static NSUInteger n; 需要注意的是该static变量的作用域,它的作用域是在定义该变量的.m文件范围内。
        和c++不同,objective c不支持类静态成员变量(也就是不支持class variables),通常的做法是在class之外定义静态变量来代替。

        objective c支持全局变量,用法和c/c++中相同。根据你的要求,这里用全局变量来实现并不合适。你需要做的是在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进行访问,无须创建实例。


转载自:http://blog.csdn.net/yang3wei/article/details/7832756

抱歉!评论已关闭.