如果我运行以下程序,我会得到Sum = 0
。但是如果我移动他的语句int a = 5
和int b = 6 inside -(int)sum {...}
,我得到输出为11.我当然理解为什么我在第二种情况下得到正确的解决方案。但是,当我定义与Sum = 0
变量同名的全局变量时,为什么会得到@property
?编译器是否优先于@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 :(得分:0)
首先,这些不是全局变量。这些是实例变量。第二 - 是的,编译器为@synthesize定义的变量赋予更高的优先级。