Objective-Cの勘所7 インスタンスの生成についての扱い

今回はインスタンス生成周りについてまとめる。インスタンス生成以外にもメソッド内の実装で重要なことを書いておく。

クラスのインスタンスを生成する方法

インスタンスはallocキーワードで生成することができる。

書式

変数 = [クラスの型 alloc];

記述例

MyClass *myClass = [MyClass alloc];

インスタンス生成後にコンストラクタを実行する

以下のコードではインスタンス生成後にコンストラクタを実行している。二重カッコで囲むと複数の処理を行うことが可能になる。

書式

変数 = [[クラスの型 処理1] 処理2];

記述例

MyClass *myClass = [[MyClass alloc] init];

また、次のような書き方もできる。

[[MyClass alloc] initWithNibName:@"HelloWorld" bundle:[NSBundle mainBundle]];

上記では、MyClassのインスタンスを生成した後にinitWithNibNameメソッドを呼び出し、引数を2つ渡している。引数として@”HelloWorld”とbundleを渡している。bundleにはmainBundleメソッドの戻り値が格納されている。

上記のbundleはラベルと呼ばれる。Objective-Cには「オーバーロード」が存在しないので、ラベルはメソッドの定義において、同一名のメソッドが複数定義されている場合に、メソッドを呼び分ける際に使用する。

参考
visible true: Java脳でもわかるObjective-C入門