Edited at

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

More than 1 year has passed since last update.

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では、印刷ダイアログのメソッド名の変更によりこの問題が解消されます。