【问题标题】:Why don't I have to build setters & getters to use these variables?为什么我不必构建 setter 和 getter 来使用这些变量?
【发布时间】:2011-12-04 03:37:43
【问题描述】:

当我在“Cocoa 应用程序”中编写代码时,我可以避免不使用 @property "bla bla bla" 和 @synthesize “……”

并且仍然用我声明的变量做我想做的事。比如……

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;
}

我不明白为什么我可以在没有事先制作任何 setter 和 getter 的情况下完成这一切。

谁能解释一下。谢谢。

哦,还有一件事..

如果一个变量只在声明它的方法中有效,为什么我能做其他事情..

例如

-(int)myMethod {
int variableA = 50;

}

-(int)myotherMethod  {
  int variableA + 100;

}

它会给我答案 150..

“myotherMethod”如何知道 variableA 等于 50。我以为他们无法访问彼此的变量..

【问题讨论】:

    标签: objective-c variables methods setter getter


    【解决方案1】:

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

    【讨论】:

    • 啊哈!哈哈,谢谢乔。我知道这似乎微不足道,但我有点困惑。非常感谢。如果你不介意的话,你能不能也帮我把最后一部分弄清楚。这只是让我有点困惑。 TIA
    • 最后一个也让我很困惑。如果没有看到所有涉及的代码,我什至无法猜测。如果它真的是一个局部变量,你不应该看到它。
    • 我想通了,再次感谢您的帮助。最后一部分我错了,这是不可能的。我发现我做错了什么:)
    • 如果这回答了您的问题,请继续接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    相关资源
    最近更新 更多