Objective-Cで利用可能なデータ型について説明します。
§1 整数のデータ型
int:符号あり整数(unsignedを付けると符号なし整数となる、現行のMacでは4バイト)
short intまたはshort:符号あり2バイト整数(unsignedを付けると符号なし整数となる)
long intまたはlong:符号あり4バイト整数(unsignedを付けると符号なし整数となる)
【各サイズで表現できる値の範囲】
・2バイト
符号あり -32768 ~ 32767
符号なし 0 ~ 65535
・4バイト
符号あり -2147483648 ~ 2147483647
符号なし 0 ~ 4294967295
1 2 3 |
int intValue; short shortValue; long longValue; |
§2 小数のデータ型
double:8バイト小数
float:4バイト小数
小数点を含んだ数値はdouble型となります。float型として扱いたいときは数値の後ろに「f」を付けます。
1 2 |
double doubleValue; float floatValue = 123.4f |
§3 文字のデータ型
char:1バイト文字
アルファベットなどの1バイト文字を1文字ずつ扱う場合には、char型の変数を使用します。値は、シングルクォーテーションで囲んで記述します。
1 |
char charValue = 'x'; |
§4 真偽値のデータ型
BOOL:true(1)またはfalse(0)の値をとる。また、trueを表すYES、falseを表すNOというキーワードも使用できます。
if文などの分岐ではBOOL型の変数を使うことができます。
1 2 |
BOOL bRet = false; BOOL bRet = YES; |
§5 オブジェクトのデータ型
クラスオブジェクトはポインタ変数を使用して管理します。
1 |
TestClass* testClass; |
id型を使用することもできます。
1 |
id testClass = nil; |
id型はどんなクラスオブジェクトであっても使用できる特殊なデータ型です。id型は内部ではオブジェクトのポインタを保持しているため「*」を付ける必要はありません。
nilはオブジェクト変数が空っぽ(どのアドレスも指していない)の状態を表します。実際には0と同値です。
§6 NSNumberクラス
数値データをオブジェクトとして扱いたい場合にはNSNumberクラスを使うと便利です。
1 2 3 4 5 6 7 8 |
//NSNumberオブジェクトの生成 NSNumber *wrapIntObj = [NSNumber numberWithInt:777]; NSNumber *wrapDblObj = [NSNumber numberWithDouble:0.123456]; //結果出力 printf("wrapIntObjをint型として取り出す : %d", [wrapIntObj intValue]); //結果出力("wrapIntObjをint型として取り出す : 777") printf("wrapIntObjをdouble型として取り出す : %lf", [wrapIntObj doubleValue]); //結果出力("wrapIntObjをdouble型として取り出す : 777.000000") printf("wrapDblObjをdouble型として取り出す : %lf", [wrapDblObj doubleValue]); //結果出力("wrapDblObjをdouble型として取り出す : 0.123456") printf("wrapDblObjをstring型として取り出す : %s", [[wrapDblObj stringValue] UTF8String]); //結果出力("wrapDblObjをstring型として取り出す : 0.123456777") |
オブジェクトに指定する数値の型に合わせてnumberWithInt、numberWithDoubleを使用してインスタンスを生成します。他にnumberWithBoolメソッドもあります。値を取り出す時は、取り出したい型に合わせてメソッドを使用します。intValueでint型、doubleValueでdouble型、stringValue型で文字列型(NSString)として取り出すことができます。
Objective-C 基礎 目次
以下の記事も参考にして頂ければと思います。
「Objective-C 基礎(1)- Xcodeのインストールとプロジェクトの作成」
「Objective-C 基礎(2)- Objective-Cの概要とメソッドの呼び出し」
「Objective-C 基礎(3)- クラス定義の方法」
「Objective-C 基礎(4)- クラスの使い方」
「Objective-C 基礎(5)- クラスメソッドとインスタンスメソッド」
「Objective-C 基礎(6)- 変数のスコープとプロパティ」
「Objective-C 基礎(7)- 変数のデータ型」
「Objective-C 基礎(8)- 文字列とNSStringクラス」
「Objective-C 基礎(9)- 可変文字列とNSMutableStringクラス」
「Objective-C 基礎(10)- Objective-Cの配列」
「Objective-C 基礎(11)- Objective-Cの連想配列」
「Objective-C 基礎(12)- ループ処理」
「Objective-C 基礎(13)- プロトコル」