我正在學習Objective-C世界中的第一個絆腳石,並附上一本關於該主題的書。我現在已經到了將創建和使用自定義類的概念內化的階段。魔術師和自定義課程 - 瞭解頭文件和實現文件
正如我認爲,正確理解這些基本概念和原則是我將來學習Objective-C的關鍵,我只是想與您覈對一下,是否已經在某種程度上正確理解了這些概念。
所以當創建自定義類時,我已經理解這是在兩個單獨的文件 - 公共類頭文件和類實現文件中完成的。爲了內化這個概念,我將這個概念隱喻地理解爲與在觀衆面前做技巧的「魔術師」並行。
頭文件有點像魔術師執行劇場外的海報。在進入之前,我們都可以看到魔術師看起來像什麼(屬性)以及他(主要是「他」)可以執行什麼技巧(方法),以及他可以製作他的魔術技巧的什麼類型的東西(類型聲明)。因此,從這個魔術師的「公開」海報(頭文件)中,我可以理解他可以執行什麼樣的魔法以及他正在使用什麼道具。也許還有一個提到,這個特殊的魔術師已經從偉大的胡迪尼(階級遺產和胡迪尼因此成爲超級階級)學到了他的一些技巧。
如果我被允許在後臺,那麼我將能夠真正看到他是如何做自己的技巧的,也就是說,我可以在魔術師執行文件中查看。
這個比喻會有點沿着你如何理解自定義類的概念?
但是,我還沒有弄清楚類方法和實例方法的概念是如何與這個隱喻相關的?
你可以說實例方法屬於魔術師的這個特殊「實例」在這個特殊節目中表演的一類技巧,並且類方法將是當代魔術師可以執行的技巧嗎?第三,方法使用「類型」的方式有點混亂。有些似乎在界面文件中被預先聲明,有些似乎只是在方法中被動態地「聲明」?
要使用「魔術師」類舉一個例子,我的頭文件的理解可能是這樣的:
@interface Magician : NSHoudini
// Instance method that given a variable of type rat it will turn this into something of type rabit
- (rabit) FromRatToRabit: (rat) aRat;
@end
和實現文件可能是這樣的:
#import 「Magician.h」
@implementation Magician
rabit aRabit
// rabit being the type and aRabit the variable
- (rabit) FromRatToRabit:(rat)aRat;
{
// some magic code goes here which will take what’s in the aRat variable, of type rat
// and turn it into a form of type rabit and return it in the aRabit variable
aRabit
}
@end
如果上面是正確的我想知道爲什麼你「喂」的方法與aRat變量沒有聲明?或者當您在方法描述中使用該聲明時認爲該聲明已完成?
非常感謝Carl,在這麼長的時間裏解釋這個!是的,我同意隱喻在理解一個概念時是危險的東西,但是通過上面給出的調整,我認爲我仍然可以以某種方式使用它。正如迪馬指出的那樣,Houdini作爲超級人選的選擇並不是很好。 – DAWO
不客氣,很高興它對你有用。 –