私のSpriteKitでは、スプライトのSKPhysicsBody
のfieldBitMask
プロパティにプロパティオブザーバを追加したいと考えています。 fieldBitMask
プロパティが変更されたときに通知を受けて、何らかの措置を講じることができます。iOSライブラリクラスの既存のプロパティにプロパティオブザーバを追加する
私はSKPhysicsBody
をオーバーロードしましたが、通常のSKPhysicsBody
オブジェクトのようにスプライトノードにオーバーライドされたクラスを割り当てようとしたときに、エラーが発生しました。私はSKPhysicsBodyの拡張についても考えましたが、Appleのドキュメントでは、「拡張機能は型に新しい機能を追加することができますが、既存の機能を上書きすることはできません」と述べています。それはプロパティオブザーバです。
私が作成した新しいカスタムクラスにプロパティオブザーバを作成する方法は分かっています。しかし、Appleライブラリの一部であるクラスの既存のプロパティにプロパティオブザーバを追加する最善の方法は何ですか?
このプロパティを購読する必要がありますか?私は良い建築の中でこのプロパティの値を変更すべきではないと思います。このプロパティは物理オブジェクトのタイプを決定するため、オブジェクトのタイプを変更する必要がある場合は、SKPhysicsBodyの新しいインスタンスを作成することができます。 –
いいえ、これは私のプロジェクトにとって便利なアプローチだと思いました。私はいくつかの物理フィールドといくつかのスプライトを持っています。物理フィールドがスプライトにどのような影響を与えるかを定期的に変更したいのです。いくつかの要素がフィールドを変更する可能性があり、コード内の複数箇所の変更に応答するのではなく、プロパティオブザーバで 'fieldBitMask'を設定する方が簡単だと思いました。次に、プロパティオブザーバのための 'didSet'のフィールドの変更に応答する必要があります。これはうまくいかないので、私は長いアプローチを取る必要があります。 – peacetype