static
放在@implementation MyClass 之外的,默认为0,
第一点
static int sCount = 100;
@implementation MyClass
+(void)addCount
{
sCount ++;
NSLog(@"静态整型变量的值为:%d", sCount);
}
@end
可以通过调用addCount方法来改变sCount的值
第二点
GG.m
- (void)aa{
staticintpage= 90;
page++;
NSLog(@"____%d",page);
}
//调用方法
GG*g=[[GGalloc]init];
[gaa];
[gaa];
[gaa];
输出
91 91 93
程序开始时局部static静态变最设置为0,并且在连续调用showPage方法时获得新值。
page只初始化一次
第三点
static 变量,只初始化一次
staticNSLock*dbLock=[[NSLockalloc]init];
定义这样一个dbLock,就是说每次调用的都是这个,而不是新的
是一个作用域的问题
综上:一句话,只初始化一次
/
static定义静态变量
#import "SUImageUtil.h"
@implementation SUImageUtil
static SUImageUtil *imageUtil = nil;
+ (SUImageUtil *)shared {
if (imageUtil == nil) {
imageUtil = [[SUImageUtil alloc]init];//autorelease
}
return imageUtil;
}
@end
关于是否添加autorelease的问题,如果添加,在第n次使用此对象时,会崩溃,原因对象被释放了
网上的一些说法:
static类型和变量存储空间是不一样的,是在整个应用的生命周期中都存在的,应用结束后会自动销毁,不需要释放