初学者が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 "ヘッダファイル名";

面倒くさいけど、基本的な部分ですなー


とりあえずこの辺りまで。
長くなり過ぎるのも疲れますので。

次はクラス等等を書いてみる予定です!!