Superclass
このクラスのインスタンスがあるとしましょうsuperclassObject
。
派生を作成しますClassA
。
classAObject
継承されたすべてのフィールドが のフィールドと等しくなるように、派生クラスのオブジェクトをインスタンス化 (初期化) するにはどうすればよいsuperclassObject
ですか?
もちろん、すべてのフィールドを循環して、 のように値を手動でコピーできますclassAObject.property = [superclassObject.property copy]
。しかし、このアプローチの問題は、スーパークラスのすべての ivar/プロパティを知らない (またはアクセスできない) 可能性があることです。もっと簡単な(そしてより一般的な)方法はありますか?
本当に基本的なものが欠けているようです...
既に初期化された UIView (フレーム、背景色、自動サイズ変更マスクなど) を取得し、それを同じパラメーターを持つカスタム ビューに置き換えたいため、これを実行しようとしています。
更新 1
私はこの質問を見つけました、そしてそこの答えはそれを言います
通常、どの OO 言語でもサポートされていません
でも
Objective-C では場合によっては可能です
サポートされていない場合は、どうすればよいですか? サポートされている場合、どうすればこれを達成できますか?
更新 2
この一般的な問題の特定のケースに対する解決策を見つけたようです。これをテストして明日報告します。
ただし、これは別のアイデアにつながります: NSCoder を使用して をエンコードしsuperclassObject
(もちろん実装する場合)、エンコードされた からのデータを知っているコーダーで<NSCoding>
呼び出すとどうなりますか? 免責事項:私はコーディングの概念にあまり詳しくない (またはまったく知らない) ので、最後の文はナンセンスかもしれません。[[ClassA alloc] initWithCoder:coder]
superclassObject