Java 、 C++ 语言中,在某个类中声明一个static 静态变量, 其他类中想使用它或者修改它 ,可以使用这个类的类名直接获得这个静态变量的对象,并且可以在其他类中任意修改这个变量的数值。
在Objective-C 中,声明的static静态变量在其他类中是不能通过类名直接访问的,它的作用域只能是在声明的这个.m文件中 。但是可以调用类的静态方法间接的修改静态变量的值。
也就是说不能在.h文件中声明static变量,例如下面两种情况都是错的,是编译不过的。
@interface MyClass { static int totalNum; } @end 或者 static int totalNum; @interface MyClass @end
但是可以再@implement 中声明static变量,或者之外都可以。
静态变量在oc中常用作单例模式中,因为可以常驻内存。例如打开一个页面,发起一个请求,立即关掉页面,但是想请求处理依然可以完成,可以把数据请求和解析写成一个单例。 但是请求处理完成之后,在恰当的时机就该清除这个静态对象,以便节省内存。