Swift中使用NSLog的问题
2016-07-01 10:42
525 查看
在Swift中如果想要以如下方式执行NSLog,则编译器必定抱怨:
因为Foo是原生Swift类不是继承自NSObject,而NSLog需要其Description方法,所以我们必须使Foo派生自NSObject,然后重载Description方法:
NSLog也支持字符串内插显示,这时你可以不从NSObject中派生,你只要遵守CustomDebugStringConvertible协议即可:
class Foo {} NSLog("%@",Foo())
因为Foo是原生Swift类不是继承自NSObject,而NSLog需要其Description方法,所以我们必须使Foo派生自NSObject,然后重载Description方法:
class Foo:NSObject { override var description: String {return "大熊猫侯佩"} }
NSLog也支持字符串内插显示,这时你可以不从NSObject中派生,你只要遵守CustomDebugStringConvertible协议即可:
class Tom:CustomDebugStringConvertible{ var debugDescription: String {return "勒布朗-詹姆斯"} } NSLog("\(Tom())")
相关文章推荐
- swift:Declaration is only valid at file scope问题解决
- 初次邂逅swift
- 自定义数据类型 --- 类全解(swift2.3)
- Swift 容器类型总结
- Swift 2.2 Warnings and It’s Solutions – Xcode 7.3
- 自定义数据类型 --- 结构体类型全解(swift2.3)
- Swift 函数总结
- Swift中10个简单易用的单行代码,提高效率,晋升逼格
- 详解Swift中属性的声明与作用
- Swift语言精要 - 浅谈代理模式(Delegate)
- Swift语言精要 - 浅谈代理模式(Delegate)
- Swift语言精要 - Dictionary(字典)
- Swift语言精要 - Dictionary(字典)
- Swift 第一周小结(1)
- 初学Swift_函数
- Swift ☞ Masonry适配详解
- Swift ☞ OC调用
- 自定义数据类型 --- 枚举类型全解(swift2.3)
- Swift tour
- swift —— as 、 as! 、as?的区别