需求:当你计算一个对象被instance几次时,通常有class level variables以及class level functions为你提供解决方案。
ClassA.h
#import <Foundation/NSObject.h>
static int count;
@interface ClassA:NSObject
+(int) initCount;
+(void) initialize;
@end
ClassA.m
@implementation ClassA
-(id) init
{
self = [super init];
count++;
return self;
}
//回传count值,注意class method
+(int) initCount
{
return count;
}
+(void) initialize //在程序开始执行是被呼叫,而且也被每个class呼叫
{
count=0;
}
main.m
#import "ClassA.h"
#import <stdio.h>
int main( int argc, const char *argv[])
{
ClassA *c1=[[ClassA alloc] init];
ClassA *c2=[[ClassA alloc] init];
//print count
printf("ClassA count:%i\n",[ClassA initCount]);
ClassA *c3=[[ClassA alloc] init];
//print count again
printf("ClassA count:%i\n",[ClassA initCount]);
[c1 release];
[c2 release];
[c3 release];
return 0;
}