#import <objc/objc.h>
#import <objc/Object.h>
static int count;
@interface foo: Object
+(int) initCount;
+(void) initialize;
@end
@implementation foo
-(id) init {
self = [super init];
count++;
return self;
}
+(int) initCount {
return count;
}
+(void) initialize {
count = 0;
}
int main( int argc, const char *argv[] ) {
foo *c1 = [[foo alloc] init];
foo *c2 = [[foo alloc] init];
// print count
printf( "foo count: %i\n", [foo initCount
] );
foo *c3 = [[foo alloc] init];
// print count again
printf( "foo count: %i\n", [foo initCount
] );
return 0;
}
@end
I2ltcG9ydCA8b2JqYy9vYmpjLmg+CiNpbXBvcnQgPG9iamMvT2JqZWN0Lmg+CgpzdGF0aWMgaW50IGNvdW50OwoKQGludGVyZmFjZSBmb286IE9iamVjdAorKGludCkgaW5pdENvdW50OworKHZvaWQpIGluaXRpYWxpemU7CkBlbmQKCgpAaW1wbGVtZW50YXRpb24gZm9vCi0oaWQpIGluaXQgewogICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgIGNvdW50Kys7CiAgICByZXR1cm4gc2VsZjsKfQoKKyhpbnQpIGluaXRDb3VudCB7CiAgICByZXR1cm4gY291bnQ7Cn0KCisodm9pZCkgaW5pdGlhbGl6ZSB7CiAgICBjb3VudCA9IDA7Cn0KCmludCBtYWluKCBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdICkgewogICAgZm9vICpjMSA9IFtbZm9vIGFsbG9jXSBpbml0XTsKICAgIGZvbyAqYzIgPSBbW2ZvbyBhbGxvY10gaW5pdF07CgogICAgLy8gcHJpbnQgY291bnQKICAgIHByaW50ZiggImZvbyBjb3VudDogJWlcbiIsIFtmb28gaW5pdENvdW50XSApOwogICAgCiAgICBmb28gKmMzID0gW1tmb28gYWxsb2NdIGluaXRdOwoKICAgIC8vIHByaW50IGNvdW50IGFnYWluCiAgICBwcmludGYoICJmb28gY291bnQ6ICVpXG4iLCBbZm9vIGluaXRDb3VudF0gKTsKICAgIAogICAgcmV0dXJuIDA7Cn0KQGVuZA==