2012/03/26

文字列の生成について:Objective-C

文字列の生成方法について、文字コードの指定や、複数の文字列を統合したい場合などパターン別にまとめ。

1.文字列を直接指定して生成する方法

NSString *str = @"hogehoge"; これは単純でわかりやすいですね。

2.文字列と文字コードを指定して文字列を生成する方法

オブジェクトを生成してからイニシャライザで指定する方法と、クラスメソッドを利用する方法があります。
結論から言うと、クラスメソッドを利用したほうがシンプル、かつ色々と便利です。

オブジェクトを生成してからイニシャライザで指定すると、
NSString *str = [[NSString alloc] initWithCString: "hogehoge" encoding:NSUTF8StringEncoding];
こんな感じ。

クラスメソッドstringWithCString を利用した場合、下記のようになります。

NSString *str = [NSString stringWithCString:"hogehoge" encoding:NSUTF8StringEncoding];

stringWithCString:encoding: メソッドはallocメソッドによるメモリ割り当てからインスタンスの初期化まで全部やってくれるみたいです。
また、ラッパークラスのところでも書きましたが、イニシャライズを利用する場合とクラスメソッドを利用する場合で、メモリ管理の手続きが若干変わるようです。そのあたりについてはまた別に機会にエントリしたいと思います。

3.複数の文字列オブジェクトを組み合わせて文字列を生成する場合

実際にはこの形もよく使いますね。
NSString *str = [NSString stringWithFormat: @"%@ と%@", str1, str2];
1.の方法で下記のように書くとエラーになります。サボってついついやりがち。(私だけ?)
NSString *str = @"%@ と%@", str1, str2;  //これはダメ
ちゃんとstringWithFormatメソッドを使って生成しましょう。

0 件のコメント:

コメントを投稿