2011-10-09 47 views
0

当我写了“Cocoa应用程序”的内部代码,我能够与不使用@property“唧唧歪歪” 和 @synthesize脱身“”为什么我不需要构建setter和getters来使用这些变量?

,仍然做我希望我已经声明的变量。例如..

IBOutlet NSTextField *textField; 
IBOutlet NSTextView *viewField; 

然后在这些变量下面简单地构建方法。

-(IBAction)buttonPressed:(id)sender; 
-(int)adding; 

我就能够进入的.m文件,我可以做这样的事情

-(IBAction)buttonPressed:(id)sender { 
int myVariable = [self adding]; 

[viewField insertText:[NSString stringWithFormat:@".... %i", myVariable]]; 

}

-(int)adding { 
    int myAge = [textField intValue]; 
    int myVariable = 100 - myAge; 

    return myVariable; 
} 

我不知道为什么我能做到这一切而没有事先制定任何安装人员。

任何人都可以解释。谢谢。

哦,还有一件事..

如果一个变量仅在声明它的方法,为什么我能不这样做内有效..

例如

-(int)myMethod { 
int variableA = 50; 

}

-(int)myotherMethod { 
    int variableA + 100; 

}

,它会给我答案.. 150

怎样的“myotherMethod”知道variableA的是等于50。我以为他们便无法访问对方的变量..

回答

2

合成的方法( getter和setter)需要从类外部访问实例变量。类中的代码(在实例方法中)可以直接访问实例变量。他们在类实现中的任何代码的范围内。范围是整个班级,而不仅仅是班级中的单一方法。

joe

+0

啊哈!哈哈,谢谢乔。我知道这似乎微不足道,但我感到困惑了一秒钟。非常感谢。 如果你不介意,你能为我清除最后一部分吗? 这只是让我有点困惑。 TIA –

+0

最后一个让我感到困惑。如果没有看到涉及的所有代码,我甚至无法猜测。如果它确实是一个局部变量,你不应该看到这一点。 – Flyingdiver

+0

我想通了,再次感谢您的帮助。我错了最后一部分,这是不可能的。我想我做错了什么:) –

相关问题