私は、Objective-C の世界で最初のつまずきの一歩を踏み出し、この主題に関する本を執筆しています。カスタムクラスを作成して使用するという概念を内面化する段階に来ました。
そして、これらの基本的な概念と原則を正しく理解することが、私の今後の Objective-C の学習の鍵であると思うので、概念をある程度正しく理解しているかどうかを確認したかっただけです。
したがって、カスタム クラスを作成するときは、パブリック クラス ヘッダー ファイルとクラス実装ファイルという 2 つの別個のファイルで作成されることがわかりました。そして、この概念を内面化するために、私はこれを、観客の前でトリックを行う「魔術師」にたとえて比喩的に理解しました。
ヘッダー ファイルは、マジシャンが上演する劇場の外のポスターのようなものです。入る前に、マジシャンがどのように見えるか (プロパティ)、彼 (主に「彼」) が実行できるトリック (メソッド)、および彼がマジックトリックを行うことができるもの (型宣言) を確認できます。 )。したがって、このマジシャンの「公開」ポスター (ヘッダー ファイル) から、彼が実行できるマジックの種類と使用している小道具を理解できます。おそらく、この特定のマジシャンが偉大な Houdini からいくつかのトリックを学んだという言及もあるでしょう (Houdini はクラスの遺産であり、Houdini はスーパークラスです)。
バックステージを許可されていれば、彼がどのようにトリックを行っているかを実際に見ることができます。つまり、マジシャンの実装ファイルを見ることができます。
この比喩は、カスタム クラスの概念をどのように理解できるかという線に沿っているでしょうか?
しかし、クラス メソッドとインスタンス メソッドの概念がこの比喩とどのように関連しているかは、まだよくわかっていません。
インスタンス メソッドは、マジシャンのこの特定の「インスタンス」がこの特定のショーで実行しているトリックのカテゴリに属し、クラス メソッドは現代のマジシャンが実行できるトリックであると言えますか? 第三に、メソッドが「型」を使用する方法が少し混乱しています。インターフェースファイルで事前に宣言されているように見えるものもあれば、メソッド内でその場で「宣言」されているように見えるものもありますか?
「Magician」クラスを使用した例を挙げると、ヘッダー ファイルに関する私の理解は次のようになります。
@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 変数が宣言されていないのはなぜでしょうか? または、メソッド記述で使用している場合、宣言は完了したと見なされますか?