OSX Yosemite(10.10.5)
Xcode 7.2.1
Swift version 2.1.1
を使用しております。
Swiftの勉強を始めた頃
最初はHello Worldからだ。などと思い
Objective-CのNSLogと同等なものを探したら
それはprintでした。
//Objective-C
NSLog(@"Hello World");
//Swift
print("Hello World")
Swiftはバージョンが上がると使えなくなるものも少なくはなく
他のサイトなどでもまだよく見かける改行が入るSwift2.xでprintlnは使用不可能になりました。
printの最後に改行入る仕様になったんですね。
使い分けるよりこっちのほうが個人的はいいです。
シミュレータ、実機でテストして変数の中を調べたい場合、いちいちXcode上で止めて見るより
printなどで流れで見たい場合は必要ですね。
変数など表示したい場合
let sTest:String = "uhehe"
print("test " + sTest)
//結果
test uhehe
Stringは"+"でつなげることで表示できるようですが、他の型の場合
var dTest:Double = 10.5
print("test \(dTest)")
//結果
test 10.5
\(変数or定数)で括れば表示されます。String型も対応しているのでこちらの書き方を覚えておいた方がいいかもしれません。
リリースビルドで実行させたくない場合
Objective-Cだとマクロで
# ifdef DEBUG
# define DEBUG_LOG(...) NSLog(__VA_ARGS__)
# else
# define DEBUG_LOG(...)
# endif
のような書き方ができますがSwiftは使えるマクロがそれほどないので
func deb_print(object: Any) {
#if DEBUG
Swift.print(object)
#endif
}
を書いて代用するか
# if DEBUG
print("hogehoge")
# endif
毎回 #if DEBUG 〜〜 #endifで括るかくらいしかない。
代用関数作った方が色々融通が利くのでSwiftはその方向で考えた方が良さそう。