() -> NSNumber
なクロージャを渡している。init(factory:)
に渡しているクロージャの式が、 () -> Animal
であるゆえに、 コンパイルエラーとなる。 ここは、 self の式の型は Animal ではなく Self なので、 () -> Self
型のクロージャを渡さねばならないからだ。fileprivate let decimal: Decimal
ということは、現状でも convenience init 経由の NSDecimalNumber のコンストラクトで、 メモリがぶっ壊れる可能性がある・・・?func castCFNumber<T>() -> T { return unsafeBitCast(cfnumber, to: T.self) }
slavaはこれを試してみるとこのこと。