2012-09-08 86 views
0

如果我運行以下程序,我會得到Sum = 0。但如果我移動他的陳述int a = 5int b = 6 inside -(int)sum {...},我得到的輸出爲11.我當然明白爲什麼我在第二種情況下得到正確的解決方案。但是當我定義與@property變量同名的全局變量時,爲什麼我會得到Sum = 0?編譯器是否給全局變量賦予了@property變量的更高優先級?帶有全局變量和屬性變量的意外輸出

// newFunction.h:

@interface newFunction : NSObject 

@property int a,b; 
-(int)sum; 

@end 

// newFunction.m

@implementation newFunction 

@synthesize a,b; 

int a = 5; 
int b = 6; 

-(int)sum 
{ 
    return (a+b); 
} 

@end 

//main.m

@autoreleasepool { 

     newFunction *var1 = [[newFunction alloc] init]; 
     NSLog(@"Sum = %i", [var1 sum]);  
} 

回答

0

首先,這些都不是全局變量。這些是實例變量。其次 - 是的,編譯器給@synthesize定義的變量賦予更高的優先級。