use*_*830 2 cocoa swift swift2
我正在使用Swift中的Cocoa项目并遇到以下问题:
Cocoa框架中的几个类(例如NSWindow或NSView)实现了一个调用的函数print:,它打开一个窗口以便打印一些东西(实际上并不知道是什么),所以当我在一个继承自这些类之一的类中工作时,想要将某些东西记录到控制台以进行调试,我使用该print:功能.但编译器认为我指的是self.print:虽然我指的是全局打印功能.
我通过声明一个像这样的全局函数找到了一个解决方法:
func myPrint(o : Any?)
{
print(o)
}
Run Code Online (Sandbox Code Playgroud)
而myPrint:不是print:在编译器会混淆我所指的函数的情况下使用.我很确定在这种情况下可能还有其他功能print:.我的解决方法或覆盖继承的print:函数是唯一的解决方案,还是我可以给编译器一个提示,说我想引用全局print:函数?
PS:我使用的是Swift 2.0,因此println:无法使用.
的确,NSView有一个
func print(_ sender: AnyObject?)
Run Code Online (Sandbox Code Playgroud)
打开"打印"面板的方法,这是一个不幸的巧合.
myPrint()例如,您的包装器有一些限制
myPrint("b", appendNewline : false)
Run Code Online (Sandbox Code Playgroud)
不编译.一个更好的实施将是
func myPrint<T>(o : T, appendNewline nl: Bool = true) {
print(o, appendNewline: nl)
}
Run Code Online (Sandbox Code Playgroud)
但是你可以简单地在模块名称"Swift"前面明确地引用全局函数:
Swift.print("xxx")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |