2013-04-12 72 views
5

在閱讀THIS問題和接受的問題答案時,我無法區分這兩種類型的方法。實際上通過閱讀這個例子來了解這一點,但是之後我無法寫出自己的靜態方法。目標C中的靜態方法(這不是類方法)C

我試着用搜索引擎創建目標C中的靜態方法

這回我鏈接到THISTHIS問題靜態方法。但是,這裏的示例是CLASS方法根據問題中的第一個鏈接。這讓我很困惑。

這裏任何人都可以告訴我怎麼做我創建一個靜態方法這不是一個類方法

任何燈光,這將不勝感激。

+0

靜態方法***是一個類級別的訪問方法。這種差異是「沒有」。但是,您可以創建靜態的全局靜態*** c-style方法,但不是類的一部分 –

+0

什麼是你在類之外的靜態方法?常規方法會有什麼不同? – CRDave

回答

18

您遇到的問題如下 - Obj-C中沒有靜態方法,這就是爲什麼您無法創建它們。

靜態方法和類方法之間的差異是語言概念之間的差異。您可以使用Java或C++等語言查找靜態方法,您可以使用Obj-C和Ruby等語言查找類方法。

的主要區別在於

  1. 靜態方法的所有實例之間共享(這不會在OBJ - C的存在)

  2. 類方法是在類方法。在像Obj-C和Ruby這樣的語言中,類本身就是另一個類的實例(metaclass)。在方法聲明之前使用+意味着該方法將在該類上定義。從技術上講,它只是一個實例方法,只是一個不同的對象。

如果您完全不理解類方法的概念,請不要擔心,這需要時間。爲了簡化,您可以將其視爲實例之間共享的方法,但可以在子類中重寫。

+0

+1感謝您的信息。我真的很困惑。我想了一會兒,如果*靜態方法*存在,我應該找到它的某個地方。再次感謝。 – viral

+0

紅寶石參考+1。我認爲這有助於不斷提醒人們,通過將它與Java,C++和C#結合起來,幫助理解Objective-C。比較python,ruby和smalltalk更容易。 –