1

最近 (いくつかのコードを見直しているときに) 私たちのプログラムにバグをもたらす奇妙な点に出くわしました。

私たちが使用している API には、次の実装があります (元のコードは Objective-C にありますが、Swift で記述します)。

internal class MyUUID: NSUUID { }

常に空のインスタンスを返すため、これはまったく役に立ちません。

説明のために、プレイグラウンドのコードをここに貼り付けます。

たとえば、単純な NSUUID を作成すると、次のようになります。

let a = NSUUID()
a.description //this creates a valid uuid

MyUUID の作成は似ているはずですが、

let b = MyUUID()
b.description //it returns an instance, but is completely empty.

しかし、うまくいきません。

もう少し調べてみると、NSUUID イニシャ__NSConcreteUUIDライザーがインスタンスを作成していることがわかりますが、MyUUID はそうではなく、何をしようとしても問題ありません。適切な UUID を作成しません。

それで、私の質問: NSUUID の子実装を作成することは可能ですか?

4

2 に答える 2