今朝、いくつかのObjectiveCカスタムUIViewサブクラスを移植していました。Swiftより「オブジェクト指向」にしたいので、CGContextメソッドで拡張する例に従っていました。例えば
extension CGContext {
func fillColor(color:UIColor) {
CGContextSetFillColorWithColor(self, color.CGColor)
}
}
私は客観的な C スタイルのメッセージ (eg -(void) drawOutline: (CGContextRef) cr {...}) を Swift スタイルのメッセージ (eg ) にあまり注意を払わずに変換していたので、最初は引数func drawOutline(cr:CGContextRef) {...}を渡していることに気づきませんでしたが、拡張されていました(Ref ではありません)。しかし、うまくいきました!CGContextRefCGContext
CGContextRefもっと奇妙だったのは、これらの を だけに変更したときCGContextです。そして、それはまだ機能しました。コンパイルしただけでなく、正しく実行して描画しました。面白半分で に変えましたextension CGContextRef。それでも、それはまだ機能し続けています。あたかも Swift がそれらを同じものに煮詰めるのに十分賢いかのようです。それは...ですか?それとも、ここでもっと微妙な/クールなことが起こっていますか?