NSView で Swift の print() をやろうとしてもプリントダイアログが起動するぞ


NSView のサブクラスでログを出そうといつものように print("hogehoge") みたいな感じにしてたらいきなりプリントダイアログが起動してしまいました。

お、おう。。
これって NSView が実装している方の print(sender: AnyObject?) メソッドが呼ばれちゃってるんですね。んなアホなと思いましたけど。

NSView
extension NSView {
    
    /* Printing action method (Note fax: is obsolete) */
    @warn_unqualified_access
    public func print(sender: AnyObject?)
    

対策として、NSView では Swift. を略さずに書いてあげればログ出力用のプリントを呼び出せるようになります。

class MyView: NSView {
    func method() {
        Swift.print("hogehoge")

        // print("hogehoge") // こっちだとプリントダイアログが起動してしまう
    }
}

追記:

macOS High Sierra / Swift 4では、印刷ダイアログのメソッド名の変更によりこの問題が解消されます。