Selecionando a function de impressão global ou object

Estou trabalhando em um projeto de cacau em Swift e enfrentei o seguinte problema:

Várias classs no Cocoa Framework (como NSWindow ou NSView ) implementam uma function chamada print: que abre uma janela para imprimir algo (realmente não sei o que), então quando eu trabalho dentro de uma class herdada de uma dessas classs , e deseja logar algo no console para fins de debugging, eu uso a function print: Mas o compilador acha que estou me referindo a self.print: embora eu esteja me referindo à function de impressão global.

Eu encontrei uma solução declarando uma function global da seguinte forma:

 func myPrint(o : Any?) { print(o) } 

e use myPrint: vez de print: nos casos em que o compilador irá confundir a qual function estou me referindo. Eu tenho certeza que provavelmente existem outras funções neste caso além de print: É a minha solução alternativa ou replace a print: herdada print: funcionar a única solução ou posso dar ao compilador de alguma forma uma dica dizendo que eu quero referir-se a print: global print: function?

PS: Estou usando o Swift 2.0, então println: não está disponível.

De fato, o NSView tem um

 func print(_ sender: AnyObject?) 

método para abrir o painel de impressão, que é uma coincidência infeliz.

Seu wrapper myPrint() tem algumas limitações, por exemplo

 myPrint("b", appendNewline : false) 

não compila. Uma melhor implementação seria

 func myPrint(o : T, appendNewline nl: Bool = true) { print(o, appendNewline: nl) } 

Mas você pode simplesmente preceder o nome do módulo “Swift” para se referir explicitamente à function global:

 Swift.print("xxx") 

Se o seu objective é simplesmente escrever saída para o console, eu usaria a function global alternativa debugPrint(_:) para esse propósito aqui.