初学者がObjective-Cで「?」となる部分をチェック(その1)
C++を学生の頃に触っていたということもあって、基本的にObjective-Cにも入りやすいのかな〜と思いきや、そうでもないんだなと。。。
基本的な構文などは類似していますが、かなり不思議に感じるのがObjective-C。
早速C++とは異なる部分をストックしておこうと思います。(個人的に注意しておきたいと思った部分も書いていますので、悪しからず)
1. 文字列の表記
文字列は「"」で囲み、先頭の「"」の前に「@」を付けて記述し、「NSString」クラスのオブジェクトとして扱われる。
例) @"iiapp" // 文字列「iiapp」
また、「@」を記述しなかった場合は、C言語のNULL終端文字列として扱われる。
例) "iiapp" // 文字列「iiapp」
結局どっちでも良いのか?っという感じ。
2. 変数の表記
変数の宣言をるすには、先に「型」を指定し、その後ろに変数名を指定する。もちろん「=」演算子で初期値の指定もできる。
例) NSInteger i; // 「NSInteger」型の変数「i」を宣言する
NSInteger j = 2; // 「NSInteger」型の変数「j」を宣言し、初期値として「2」を代入する
C++だと「int i;」てできたのに、ちと面倒くさいよねーw
3. 変数の初期化
Objective-Cのオブジェクトで無効な状態を表すのが「nil」で、「0」と等価である。
例) iiapp = nil; // 変数「iiapp」を初期化する
nil、にる?、ニル?、違和感を感じるのは私だけか・・・
4. 定数の表記
Objective-Cでは、定数は「enum」「const」「#define」を使用して定義する。
例) const NSInteger iiapp = 10; // 「NSInteger」型の定数「iiapp」を「10」として定義する// 列挙を定義する
enum {
kOneValue = 1, // 定数「kOneValue」を「1」として定義する
kTwoValue, // 定数「kTwoValue」を「2」として定義する
kThreeValue // 定数「kThreeValue」を「3」として定義する
};// プリプロセッサディレクティブで定義する
// マクロ「kTimeout」を「10.5」として定義する
#define kTimeout 10.5
iPhoneアプリの開発では、文字列定数を多く使用する。文字列定数は「NSString」クラスの文字列です。文字列定数はソースファイルで定義し、他のファイルから参照できるようにヘッダファイルで「extern」付きで宣言する。
例) (ソースファイル)
// 文字列定数「kMyObjType」を「MyObjType」という文字列として定義する
NSString *kMyObjType = @"MyObjType";(ヘッダファイル)
// ソースファイルで定義している文字列定数「kMyObjType」を参照できるように宣言する
extern NSString *kMyObjType;
こういう部分は頭に入れておかないと、コードリーディングするときなんかに困りますよねー
5. ヘッダファイルの読み込み
ヘッダファイルで定義されている定数を使用したり、クラスを使用したりするには、ヘッダファイルを読み込む必要がある。ヘッダファイルを読み込むには、プリプロセッサディレクティブの「#import」文を使用する。
例) // システムヘッダファイルを読み込む
#import <ヘッダファイル名>;// ユーザーヘッダファイルを読み込む
#import "ヘッダファイル名";
面倒くさいけど、基本的な部分ですなー
とりあえずこの辺りまで。
長くなり過ぎるのも疲れますので。
次はクラス等等を書いてみる予定です!!