0

如果我运行以下程序,我会得到Sum = 0. 但是如果我移动 he 语句int a = 5int b = 6 inside -(int)sum {...},我得到的输出是 11。我当然明白为什么我在第二种情况下得到了正确的解决方案。Sum = 0但是当我定义与变量同名的全局变量时,为什么会得到@property呢?编译器是否赋予@property变量高于全局变量的优先级?

// 新函数.h:

@interface newFunction : NSObject

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

@end

// 新函数.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]);       
}
4

1 回答 1

0

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

于 2012-09-08T17:00:22.083 回答