7
8

More than 5 years have passed since last update.

swift:Objective-CはNSLog、Swiftはprint

Posted at

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はその方向で考えた方が良さそう。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8