2012-10-14 19 views
2

我正在學習客觀的C和iOS開發。我想我有一個方法語法的句柄。 Method Syntax in Objective C這個目標C方法應該返回一個IBAction。爲什麼沒有回報聲明?

如果我理解正確,這個實例方法稱爲reset應該返回一個IBAction對象。但它似乎是設置實例變量(這是與這些名稱的UI文本字段)。爲什麼它沒有返回語句返回一個IBAction對象?

- (IBAction)reset {    //why does it not have a return statement? 
    fahrenheit.text = @"32"; 
    celsius.text = @"0"; 
    kelvin.text = @"-273.15"; 
} 

,我習慣了,應該是這樣的(把它在僞非NET人).NET代碼:

public function reset() returns IBAction 
     me.fahrenheit.text = "32"; 
     me.celsius.text = "0" 
     me.kelvin.text = "-273.15" 
     return new IBAction //I would expect something like this in obj C, based on my experience with .NET languages 
end function 
+0

作爲參考,' - (ClassType)方法幾乎不會發生。按價值傳遞只適用於原始圖和結構,IIRC;對於類,你必須通過指針傳遞它們(並返回它們)。即使你的對象變量是指針。 (那麼,句柄,但仍然。) – cHao

+0

這意味着,如果你看到' - (SomeType)方法','SomeType'可能不是一個類。 – cHao

回答

6

IBAction爲被typedef定義無效。它被Xcode用作提示,該方法可用於界面構建器中的「連接」。

+0

@ ctrahey - 所以我可以將此方法解釋爲「返回void」/即不返回對象(或對象,對於目標C的引用)。由於該方法返回void,因此編譯器不希望它返回引用,因此不允許返回語句。得到它了? – bernie2436

+0

完美,是的!可以有'return;',但也是完全合法的,沒有return語句。 –

+1

@ akh2103順便提一句,你可以在'UINibDeclarations.h'中看到'IBAction'的'#define'(而不是typedef)。 –

相關問題