2011-10-09 67 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

我想通了,再次感謝您的幫助。我錯了最後一部分,這是不可能的。我想我做錯了什麼:) –

相關問題