最近 (いくつかのコードを見直しているときに) 私たちのプログラムにバグをもたらす奇妙な点に出くわしました。
私たちが使用している 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 の子実装を作成することは可能ですか?