swift debug技术

主要有两个函数用于输出的文本表示对象和变量,那就是 print( ) 和println( )。

  • println( )换行输出;
  • 其他的函数还有 debugPrintln()和debugPrint();

下面的例子中给出了一些功能,可以用于高级调试。

e.g: println("Hello World!")

控制台输出:

Hello World!

e.g:

var temp:String = "This is a String "
println(temp)
debugPrintln(temp)

控制台输出:

This is a String
"This is a String"

要实现对某个进行描述输出,可以重写debugDescription( )或者 description( )方法:

e.g: 
class ClassA: NSObject {
var name: String = "unknown"
override  var description: String {
    return "ClassA: \(name)"
}
}
var tempA: ClassA = ClassA()
print(tempA.description)
println(tempA)

控制台输出:

ClassA: unknown
ClassA: unknown

使用toDebugString( )和toString( ) 这两个方法将返回的结果debugPrint并打印成一个字符串:

e.g:
var str: String = toString(tempA)
println(str)

控制台输出:

ClassA: unknown

precondition( )和preconditionFailure( )这两个方法的使用:

e.g:
var value: String = ""    
if value.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) == 0 {
preconditionFailure("value is empty")}

控制台输出:

fatal error: value is empty: file /Users/cramesh/Documents/My_Works/SwiftTutorial/SwiftTutorial/AppDelegate.swift, line 37

确定一个对象可以用unsafeAddressOf():

e.g: println(unsafeAddressOf(value))

控制台输出:

0x00007f8df251e480

输出和方法名可以做一下处理:

var className =       NSStringFromClass(self.classForCoder) println(className)
var methodName = NSStringFromSelector(__FUNCTION__) 
println(methodName)
//或者
println(__FUNCTION__)

你可能感兴趣的