在Objective-C中如何实现像C++中那样的静态成员变量呢?
你需要做的是在一个类A的implementation(.m或者.mm)文件中定义一个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.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进行访问,无须创建实例。