2014-01-01から1ヶ月間の記事一覧

NSStringから1文字を取ったらunichar

Javaプログラマ向け、Objective-Cにおける文字列と1文字の扱い。Javaでは、char型は2バイトのUnicode 1文字を表す。 Objective-Cでは、unichar型が1文字に相当する。たとえば、Javaでは以下のように、String#charAt で1文字を取得できる。 public class Test…

配列を末尾からイテレーションするには

Javaプログラマ向け、Objective-Cにおける配列イテレーションの小技。配列(リスト)の末尾から先頭までを順にイテレーションするには。Java public class Test { public static void main(String[] args) { java.util.List<String> list = new java.util.ArrayList<</string>…

配列をプロパティにするときには注意する

Javaプログラマ向け、Objective-Cにおける配列プロパティの扱い。自作クラスの属性で可変配列を管理したいということはよくある。 そして、その内部配列を読み取り専用として外部に公開したいということもあるだろう。たとえば、以下のようなチャットルーム…

配列のソート2

JavaプログラマのためのObjective-Cにおける配列ソート解説。第2弾。前回は、NSSortDescriptorクラスを使った配列のソート方法を紹介した。 内容的にはシンプルであったとは思うが、Key-Valueコーディングや、セレクタなど、Objective-C独特の手法が絡んでい…

配列のソート

JavaプログラマのためのObjective-Cにおける配列ソート解説。いくつかのソート方法がある。 そのうち簡単なのは、以下のようにNSSortDescriptorクラスを使うことだ。 NSSortDescriptor* dec = [NSSortDescriptor sortDescriptorWithKey:@"key" ascending:YES…

10進数クラスの話

Javaプログラマ向け、Objective-Cの10進数クラスの話。JDK 7, Xcode 5.0 浮動小数点型では、10進数の小数部を正しく表現できないことが多い。 具体的には、2の-n乗の値の組み合わせでしか小数値を表せない。 これはIEEE 754の仕様上、当然のことである。たと…

OS Xでランダムな文字列を得る

調べればすぐに分かるが、どうせまたすぐに忘れそうなのでメモ。以下は8文字のランダムなパスワードを生成するコマンド。 $ cat /dev/urandom | LC_CTYPE=C tr -dc '[:alnum:]' | head -c 8 | awk '{print}' このコマンドのそれぞれが何をしているのか。 OS…

Integer.parseIntによる負の2進数解析

Javaで2進数文字列をint値にしたいと思ったら、Integer#parseInt(s, 2) をすればよいのだろうな public class Test { public static void main(String[] args) { String s = "10000000000000000000000000000000"; // 32 length characters int i = Integer.p…