Objective-C 实现全局变量

Objective-C 实现全局变量

Objective-C 支持全局变量,主要有两种实现方式:第一种和C/C++中的一样,使用"extern"关键词;另外一种就是使用单例实现。(比如我们经常会把一个变量放在AppDelegate里面作为全局变量来访问,其中AppDelegate就是一个单例类)

在Objective-C中如何实现像C++中那样的静态成员变量呢?

你需要做的是在一个类A的implementation(.m或者.mm)文件中定义一个static变量,然后为A类定义静态成员函数(class method,也就是类方法)来操作该变量。这样在其它类中你就不需要创建A类的实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量,但是也算达到了同样的效果。static变量的作用域被限制在单一的文件中。代码可以如下所示:

view plain

  1. //example.h
  2. @interface Example : NSObject {
  3. }
  4. - (id)init;
  5. +(int)instanceCount;
  6. @end
  7. //example.m
  8. #import "example.h"
  9. static int count;
  10. @implementation Example
  11. -(id)init{
  12. self = [super init];
  13. if(nil!=self){
  14. count+=1;
  15. }
  16. return self;
  17. }
  18. +(int)instanceCount{
  19. return count;
  20. }
  21. @end

上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。