Objective-C中的开放变量

Objective-C中的开放变量,objective-c,global-variables,Objective C,Global Variables,我需要帮助。我需要一个变量,可用于我的应用程序中的每个函数 @interface A() @property (assign) CGFloat x; @end @implementation @synthesize x = _x; -(void)DidLoad { ... self.x = 1.0; } -function1 { CGFloat y; y = x; NSString *

我需要帮助。我需要一个变量,可用于我的应用程序中的每个函数

    @interface A()
    @property (assign) CGFloat x;
    @end

    @implementation
    @synthesize x = _x;

    -(void)DidLoad
    { ...
     self.x = 1.0; }

    -function1
    { CGFloat y;
      y = x;
      NSString *string = [NSString stringWithFormat:"%f", y];
      NSLog(@"%@", string);
}


但是“y”是空变量!你能帮助初学者吗

在功能1中,您应该使用:

y = self.x;

y = _x; //this should work too, but it's not recommended to access the variable that way.

为什么你会说不推荐使用iVar?就内存管理而言,它是完全安全的,并且避免了函数调用的开销。哦,我犯了一个错误。我写了y=self.x;而“y”仍然是empty@RichardJ.RossIII在此上下文中使用iVar是安全的(在它和属性相同的情况下),在属性中可能包含自定义代码的情况下,它会成为一个问题—获取/设置iVar不会调用代码。我发现始终使用该属性是一种很好的做法,因此它会成为一种习惯。@RichardJ.RossIII我说不建议使用它,因为这样您就不会访问setter/getter方法。在这种情况下,它可能是安全的,但我发现调用getter和setter是一种很好的做法。