「Objective-C 2.0プログラミング言語: クラス」の続きを読む
公開日:
:
最終更新日:2014/01/08
Objective-C
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
クラスオブジェクト
コンパ イラは、クラスを表すオブジェクト、すなわちクラスオブジェクトを1つだけ作成します。クラスオブジェクトは、クラスに関するすべての情報にアクセスできます。
クラスオブジェクトは階層の上位にあるクラスからクラスメソッドを継承します。
int versionNumber = [Rectangle version];
id aClass=[anObjectclass];
id rectClass=[Rectangleclass];
ClassaClass=[anObjectclass];
ClassrectClass=[Rectangleclass];
クラスオブジェクトは、動的に型定義したり、メッセージを受信したり、他のクラスからメソッドを継承することができる完全なオブジェクトです。
インスタンスの作成
id myRect;
myRect=[Rectanglealloc];
allocメソッドは、新しいオブジェクトのインスタンス変数に動的にメモリを割り当て、すべてを0に初期化します。
オブジェクトが有用であるためには、通常は完全に初期化する必要があります。その初期化を行うのがinitメソッドの機能です。
myRect=[[Rectanglealloc]init];
クラスオブジェクトによるカスタマイズ
[myMatrix setCellClass:[NSButtonCell class]];
クラスが、メッセージで
渡したり、変数に割り当てることのできるオブジェクトでなければ、このようなカスタマイズは困難です。
変数とクラスオブジェクト
クラスのすべてのインスタンスがデータを共有するには、何らかの外部変数が必要になります。最も簡単に実現するには、次のコードで示すようにクラス実装ファイルで変数を宣言します。
int MCLSGlobalVariable;
@implementation MyClass
// 実装が続く
より洗練された実装では、static変数を宣言し、それらを管理するクラスメソッドを提供します。
static MyClass *MCLSSharedInstance;
@implementation MyClass
+ (MyClass *)sharedInstance
{
// 共有インスタンスの有無を確認する
// 必要なら作成する
return MCLSSharedInstance;
}
// 実装が続く