idについて †
オブジェクトは、どのクラスに属するものでもidという特別な型で表現される。
オブジェクトの生成 †
- allocは、生成されたオブジェクトを0初期化してくれる。(但しisa変数は除く)
id型のオブジェクトを生成する例
クラスAへallocメッセージを送りインスタンスを生成する。そのインスタンスに対し、イニシャライズメソッドinitを呼び出している。
id obj = [[A alloc] init]
オブジェクトへのメッセージ呼び出し例(メソッド呼び出し) †
単純な例 †
引数は、:で繋げる。
引数名:引数という利用方法が可能
[obj methodA]
[obj methodB:param1]
[obj point:3 y:10];
[[obj methodC] methodD]
[obj methodB:[obj methodC]]
スーパークラスのメソッド呼び出し例. †
method1を実装している直近のスーパークラスのmethod1が呼ばれる。
[super method1]
クラス †
クラスの定義 †
インターフェース部 †
- インスタンス変数とメソッドを宣言する.
- インターフェース部は、ヘッダファイル(xxx.h)として作成する.
- Cocoa環境で定義する全てのクラスは、NSObjectをスーパークラス(ルートクラス)
と持たなければならない。
- サブクラスは、スーパークラスの変数なら任意に参照する事ができる.
定義の例
@interface クラス名 : スーパークラス名
{
インスタンス変数の宣言;
}
メソッドの宣言;
@end
インスタンス変数の宣言例 †
int value;
id obj;
メソッドの宣言例 †
- メソッドの宣言時に型を指定しないと、id型と見なされる。
- 現在では、全ての型を明示するのが一般的。
- 局所的なメソッド(private)は、インターフェース部にではなく、実装部でのみ定義する。
- 但しサブクラスが、誤って局所的なメソッドを上書いてしまう危険がある。
-(id)init:(int)value;
-(void)dealloc;
-(int)add:(int)value;
-(int)add:(id)obj;
-(int)value;
クラスの実装 †
実装部は、実装ファイル(xxx.m)として作成する。
実装部の例 †
@implementation クラス名
メソッドの定義
@end
selfについて †
メソッド内で、自オブジェクトを参照するのに利用する。
イニシャライザ †
- イニシャライザでは、通常スーパークラスのinitを呼び出す。
これをしなければ、スーパークラスの初期化漏れとなる。...これくらい勝手にやってくれよ
- 指定イニシャライザと副次的イニシャライザの二つがある。
例
A.h
@interface A : NSObject {
int a;
@end
-(id)init:(int)val;
A.m
@implementation A {
-(id)init:(int)val {
self = [super init]
if( self != nil ) {
a = val;
}
return self;
}
}
@end
BOOL型について †
- Objective Cでは、BOOL型を利用する。
- trueはYES(0でない値)、falseはNO(0)と定義されている。
ヘッダファイルのインクルード方法 †
#importを利用する
#import <stdio.h>
コンパイル方法 †
- 通常、動的ライブラリのFoundationフレームワークを利用する。
コンパイル例 †
cc source.m -framework Foundation
C関数の利用方法 †
- objective-cの機能を利用せず、Cの関数のみの実装ファイルは.cで良い。
- 関数の中でobjective-c固有の機能(クラス等の利用)を行う場合は、.mにする。
最新の20件
2010-11-13
2010-10-31
2012-07-02
2010-11-08
2010-11-27
2010-10-30
2010-11-07
2012-07-02
2011-01-18
2011-01-03
2010-12-18
2010-12-13
2010-12-11
2010-12-05
2010-11-27
2010-11-24
2010-11-22
今日の5件
- counter: 96
- today: 1
- yesterday: 0
- online: 1