how to inherit from a class which is 'only visible via the Objective-C runtime'?
あなたはしません。
これは、あなたが考えているように、適切な「オブジェクト」の周りにラップされません。これは、C構造体であるdispatch_group
にラップされています。このクラスはサブクラス化されるようには設計されておらず、通常の方法でObjCにブリッジしないので、サブクラス化することもできません。
低レベルのCタイプは、多くの場合、システムの部品が対処する方法を知っているようにハードコーディングされている非常に珍しい構造を持っている(これはNSString
とCFString
などのフリーダイヤルブリッジとすべての時間に発生し、直接その橋を「オブジェクト」 )。多くの場合、タイプは構造の慎重な選択によってメモリレイアウトが同一になるように設計されています(私はDispatchGroup
を選びませんでしたが、このグループのように見えます)。それが当てはまると、メモリのレイアウトが異なり、ブリッジを解除するため、ストレージを追加できません。様々なコメンターが言ったように
、あなたもははがこれを行うにはどのようにのための簡単な答えはありません理由である、これを行うべきではありません。サブクラス化のために明示的に設計されていないクラスは、Swiftでサブクラス化することが意図的に困難または不可能です(これは定期的にDispatchGroup
よりトリッキーな型の周りに出現し、その答えは同じです。
なぜあなたは 'DispatchGroup'をサブクラス化しようとしていますか?おそらくあなたの質問はあなたが達成しようとしているものに関するものでなければなりません。 – rmaddy
あなたのコードはここでうまくコンパイルされます。 'error: 'DispatchGroupPlus'にアクセス可能な初期化子がないので、インスタンスを作成できません。 – shallowThought
@JoeBlowそれはあなたがそれをサブクラス化する必要があるわけではありません。作成する、継承しない。 – Alexander