13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

数値をNSStringにキャストする方法(検証つき)

Last updated at Posted at 2015-07-11

2つの方法

全部で2つってことではないですが、代表的なものとして以下があります。

A: stringWithFormatを利用する

NSInteger num = 100;
NSString *str = [NSString stringWithFormat:@"%ld",num];

これは入門書などにも多く書かれていて一般的です。
(Cっぽい)

B: NSNumerを利用

NSInteger num = 100;
NSString *str = @(num).stringValue;

こっちの方が割とわかりやすいかなって個人的には思います。
(Javaっぽい)

@(n)

この部分はリテラル表記を使っていて

[NSNumber numberWithInt:n]

と同じです。

したがって、NSNumberのstringValueメソッドでキャストすることができます。

検証

書く量が減るので B 一択だろと思ってましたが、
ふと本当にいいのか?パフォーマンス大丈夫なのか?と思ったので軽い検証をしました。

100 というログを10000回吐くまでの時間を計測しました。
計測はXcode 6から XCTest.frameworkに追加されたメソッドを利用しました。

結果は以下のようになりました。

Kobito.AcKlPY.png

倍近くかかってます。
結果は面倒なので載せませんが、複数回行ったところ大体同様な結果が得られました。

Bが倍近くかかった原因としては
NSInteger -> NSStringではなく NSInteger -> NSNumber -> NSStringと2回キャストを行っていることが挙げられます。

まとめ

  • 数値からNSStringへのキャストには大きく2つある
  • NSNumberを利用した方がいちいちフォーマットを書く必要がなくてなんとなく楽
  • 単体で言えば差は 0.1595ms

個人的には基本はBを使って、パフォーマンスを意識したい部分、文字と組み合わせる部分ではAかなと思ってます。

13
14
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
13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?