Project Unknown's Blog

Peojct.Unknownと言う名前で細々とアプリ開発をやってるメンバーのブログです。

ログを出力する方法

どうも、勉強中のどうまずです。
実は他の記事を書いていたのですが、肝心なことを忘れていました。

それは表題のログを出す方法です。

これが無いと、いろいろ説明し難い点があるのに気付いたので、記載します。

ログは我々初心者にとって、大変心強いものです。
何せ、アプリの内容を変更せずに変数の中身や、実行順序を把握できるのですから!

文字列を出す方法

まず、わかりやすい、文字列を出す方法は次の通りです。

 
NSLog(@"文字列のログを出す!!");

これを実行ラベルの文字列変更の下あたりに書いて、
シミュレータを実行すると次のように文字列が表示されます。
表示される場所はXcodeの下の方です。

20150104_1.png

変数を表示する方法

次に変数(データを入れる箱)を表示する方法です。
まずは変数を定義します。

 
int i = 1;
double dou = 2;
float flo = 3.0f;
NSString *nss = @"あけましておめでとうございます";

これを書いたら、早速警告がその行の左側に出てきます。
これは、その変数使ってないよって意味です。あとで使うので、今は無視!

変数の型たちは他のプログラミング言語でみられる方々ですね。
ちなみに、まだ理解不足で触れませんが、[*nss]の「*」はポインタの意味だそうです。

型がよくわからない場合は「Objective-c データ型」で調べて下さい。

次に、それぞれの変数をログに表示していきます。
これは、細かく説明するのではなく、ソース上のコメントに説明を書いていきます。

 
//int型は%dで表示
NSLog(@"%d",i);
//doubleとfloatは両方とも浮動小数点型なので、%f
//複数の変数を表示する場合は、カンマ区切り
NSLog(@"%fと%f",dou,flo);
//文字列の型はポインタなので、ポインタの出力は%@
NSLog(@"%@",nss);

そして、実行した結果は下記の通りです。
20150104_2.png

こんな感じでログがさせれば、開発も楽になるはずです。
ってか、わからないと、開発無理ですよね・・・

追記

浮動小数点型は小数点以下6桁まで表示と若干うざいので、
ちょっと下記のように工夫します。

 
    float flo = 0.12345f;
    NSLog(@"未設定:%f",flo);
    NSLog(@"小数点第2位まで:%.2f",flo);
    NSLog(@"小数点第4位まで:%.4f",flo);
    NSLog(@"小数点第7位まで:%.7f",flo);
    NSLog(@"動的に変化:%g",flo);

結果は下記の通りです。

未設定:0.123450
小数点第2位まで:0.12
小数点第4位まで:0.1235
小数点第7位まで:0.1234500
動的に変化:0.12345

自動で四捨五入してくれたり、0埋めしたりなかなか便利かも・・・

しかし、興味本意で下記ようなことをやってしまいました。

 
NSLog(@"小数点第100位まで:%.100f",flo);

結果は・・・

小数点第100位まで:0.1234500035643577575683593750000000000000000000000000000000000000000000000000000000000000000000000000

すごい、100位まで出た!
って、あれ?なんか途中で暗号が組み込まれてる?
え?3564357757568359375?なにこれ?

これは、明日調べよう!!

追記その2

どうやら、調べてみると、浮動小数点の 精度 の問題のようです。
float型は有効桁数が7桁なので、それが原因ではないかと思われます。