注释方法
Swift中有两种较为常见的注释方法:
- 用于方法功能说明的注释,对于编程中调用代码显示代码功能很方便:
Log日志输出
在Debug环境下输出日志,而在发布release的时候,就屏蔽掉相关的日志的打印。
日志定位相关
在oc中,想要在日志输出中显示文件、文件名等信息,可以使用以下宏定义。
- 打印当前文件路径,c字符串: _ _ FILE _ _
- 打印当前函数或方法 : _ _ FUNCTION _ _
- 打印当前行号,整数 : _ _ LINE _ _
NSString* fileName = __FILE__;
在Swift中,则:
- 打印当前文件路径,c字符串: #file
- 打印当前函数或方法 : #function
- 打印当前行号,整数 : #line
let fileName = #file
自定义一个通用的日志输出方法
func textlog(){
mylog(123)
}
func mylog<T>(_ message:T,fileName:String = #file,functionName:String = #function,codeLine:Int = #line){
print("\n")
print(fileName + "-" + functionName + "-Line:\(codeLine)")
print(message)
}
textlog()
如果我们把该日志输出函数写在某个类里面的话,那么就只有该类可以调用,其他类就用不到了。如:
class controllerA{
func log(){
mylog(123)
}
}
class controllerB{
func mylog<Tlll>(_ message:Tlll,fileName:String = #file,functionName:String = #function,codeLine:Int = #line){
print("\n")
print(fileName + "-" + functionName + "-Line:\(codeLine)")
print(message)
}
}
在Swift中,只要我们把方法不写在类里面,而是写在与类同一个层级,那么就可以定义成全局函数,成为在任何文件里面都可以用到的全局函数。即如:
class controllerA{
func log(){
mylog(123)
}
}
class controllerB{
func log(){
mylog("哈哈哈哈")
}
}
class controllerC{
func log(){
mylog(180.5)
}
}
func mylog<Tlll>(_ message:Tlll,fileName:String = #file,functionName:String = #function,codeLine:Int = #line){
print("\n")
print(fileName + "-" + functionName + "-Line:\(codeLine)")
print(message)
}
全局函数没有规定写在哪里,可以在controllerA.Swift文件中,也可以在controllerB.Swift中,但为了方便管理与查找修改,还是创建一个专门管理的Swift文件比较好。
在Swift中没有宏定义,所以以前在OC中是使用宏定义进行Debug版本和Release版本的切换,在Swift中要先修改项目配置文件中的SwiftFlags。
然后点开Flags,点击Debug项目,为其添加一个标记,其中“-D”是固定写法,其后所跟着的“DEBUG”是你想要添加的标记,这么写后,编译器在编译的时候,如果遇到这个标记,在Debug的情况下才会进行编译,否则则不编译。 然后接着我们就可以在代码中使用:
func Log<T>(_ message:T,fileName:String = #file,codeLine:Int = #line){
#if DEBUG
print("\n")
print("\(fileName) - Line:\(codeLine)")
print(message)
#endif
}
来控制在Debug环境下输出日志,而在发布环境下不输出日志。
|