Objective-Cには、Alloc/Initのメタファーがあります。また、内部的に両方を連続して呼び出す「new」と呼ばれる共有の便利なメソッドも追加しました。また、FooClassというNSObjectのサブクラスを作成すると、FooClassは「new」を含むこれらの共有メソッドを取得します。
しかし...それはどのように実装されていますか?
派生クラスFooClassではなくNSObjectのインスタンスをインスタンス化するだけなので、単純に基本クラスに委任することはできませんが、それでも機能します。では、誰かが似たようなものをどのように書くのでしょうか?
言い換えれば、基本クラスはこれであってはなりません...
+ (id) somethingLikeNew{
return [[NSObject alloc] init];
}
むしろこれ...
+ (id) somethingLikeNew{
return [[<SomethingThatMapsToFooClassType> alloc] init];
}
...ここで、「SomethingThatMapsToFooClassType」は、NSObjectから継承し、共有メソッド「somethingLikeNew」を取得する必要がある派生クラスのタイプです。
基本的に、NSObjectからカテゴリを追加し、タイプを知る必要のあるメソッドを共有しましたが、実装はすべて汎用であるため、クラスファイルのすべての場所ではなく、NSObjectのカテゴリに分類されます(同じ方法で)あちこちに「新しい」というものはありません。ただそこにあります。)
誰?ビュラー?ビュラー?
M