考虑以下 Objective-C 代码:
@interface ClassA : NSObject {
}
-(void) printVal;
@end
@implementation ClassA
-(void) printVal {
int val;
NSLog(@"%i", val);
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ClassA* cA = [[ClassA alloc] init];
[cA printVal];
[cA printVal];
[cA printVal];
[pool drain];
return 0;
}
为什么是这个输出:
2012-11-29 22:12:06.586 TestOne[20266:903] 0
2012-11-29 22:12:06.587 TestOne[20266:903] 32767
2012-11-29 22:12:06.588 TestOne[20266:903] 32767
也就是说,为什么在val
重新声明的时候没有重新初始化为0,为什么32767
后续每次调用方法都接收到值?