具有全局变量和属性变量的意外输出

时间:2012-09-08 13:22:05

标签: objective-c xcode

如果我运行以下程序,我会得到Sum = 0。但是如果我移动他的语句int a = 5int 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]);       
}

1 个答案:

答案 0 :(得分:0)

首先,这些不是全局变量。这些是实例变量。第二 - 是的,编译器为@synthesize定义的变量赋予更高的优先级。