objective-c特性ノート
4142 ワード
1.@interface Circle :NSObject 言い訳キーワード:interface @interface Circle:Circleという新しいクラス定義のインタフェース. NSObjectから継承される.
2{}の理解には、クラスのデータメンバーが含まれています. Circleオブジェクトを作成するたびに、この2つのインスタンス変数が含まれます. 注意:fillcolor、boundsはクラスのデータメンバーと呼ばれます.Circleクラスオブジェクトの値をインスタンス変数と呼びます.
3.メソッド宣言 - (void) setFillColor : (ShapeColor) fillColor ; メソッドタイプ戻りタイプメソッド名メソッドが受け入れるパラメータのタイプパラメータ名 4接頭辞は、メソッドの名前とパラメータを結合するために、接尾辞を使用する. パラメータ付きメソッドを呼び出す: [circle setFillColor : kRedcolor]; 2 2 2つのパラメータを持つメソッドを呼び出す: [circle setFillColor:kRedcolor setBounds:rect];
5.
1.@implementation
クラスに実装コードが提供されることを示すコンパイラ命令.
2.次に、各メソッドの定義です.宣言の順序で表示する必要はありません.宣言にないメソッドを実装することもできます.
3.@interfaceと@implemention間のパラメータ名が異なり、異なる必要があります.
宣言先:-(void)setFillColor:(ShapeColor)fillColor;
実装:-(void)setFillColor:(ShapeColor)c
{
fillColor = c;
}
実装では、パラメータ名とインスタンス変数の名前を区別する必要があります.最も簡単な方法は、パラメータを再命名することです.
4.ocメソッドを呼び出すと、隠しパラメータ(self)が受信オブジェクトに渡され、このパラメータは受信オブジェクトを参照する.このパラメータ伝達プロセスは秘密で自動的であり,プログラマは実現する必要はない.すなわち、クラス内のメソッドは、インスタンス変数の値を直接使用することができる.
6.インスタンス化:オブジェクトにメモリを割り当て、これらのメモリにデフォルト値を保存します.は、対応するクラスにnewメッセージを送信し、対応するオブジェクトを作成する. new法はalloc+initに等価である.
7.idタイプ変数 idは、任意のタイプのポインタを受信することができる. ポインタが受け入れられないまでメソッドを呼び出すことはできません.
8.実装クラスの3つのステップクラスインタフェース クラス実装 使用クラス クラスインタフェースが最も重要です.
スーパークラス、データメンバー、メソッド;
スーパークラスでは、NSObject、NSObjectのサブクラスがよく使用されます.
9.
NSLog(@"%@“);
最初の@は、NSStringタイプのオブジェクトが出力されることを示します.
後の%@はocの任意のタイプのオブジェクトを表します.
10.
Car *car;//Carオブジェクトのポインタを定義
car =[Carnew];//5つの空のポインタを含むCarオブジェクトを生成し、Carオブジェクトポインタにアドレスを割り当てます.
new=alloc+init初期化状態を変更するにはinitを書き換える.
11.
Initはすべてのデータメンバーを初期化します.
2つのデータソース、1つはスーパークラス、1つは自身で追加されます.
if(self = [ super init ])ここでメッセージ〔super init〕を呼び出し、スーパークラスの初期化を完了させる. initメソッド戻り値(idタイプ)は、初期化されたオブジェクトを記述する. が「super init」の結果をselfに付与するのはocの慣例であり、初期化中にスーパークラスが返されるオブジェクトが元に作成されたオブジェクトと異なることを防止する.
12.new,init関数の区別
[engine new] = [[engine alloc]init] allocを使用すると、メモリは クリアされます. initを呼び出すと、オブジェクトが使用可能になります.
13.
NSLog(@"%@",engine);//cocoaクラスにdescriptionメソッドを追加すると、nslog()がオブジェクトを出力する方法をカスタマイズできます.
結果は:i have an engine
アクセスメソッド
特定の属性の読み取りまたは変更に使用する方法
修正方法(mutator method)
オブジェクトの状態を変更する方法
クラスのオブジェクトメソッドです.
理解:
setter:オブジェクト内の属性に値を割り当てます.
getter:オブジェクトのプロパティを読み込む方法を提供します.
他のオブジェクトのプロパティを操作する場合は、他のオブジェクトのプロパティを直接操作するのではなく、オブジェクトが提供するアクセス方法を常に使用します.
アクセスメソッドは常にペアで表示され、ペアで表示されなくてもよい.
使用規則:
setter:
set+属性名
getter:
属性名
get接頭辞は使用されません.cocoaには特別な意味があります.ポインタをパラメータ伝達関数として返し値を取得します.
配列操作アクセス方法の本質:配列の操作には、配列のヘッダアドレス、配列の下付きが必要です.//配列ヘッダアドレスはクラスのデータメンバーに直接アクセスし、配列の下にはパラメータが表示されます. は、方法において、配列のヘッダアドレス、下付きラベルを決定する.
15.クラスのオブジェクトのメソッドのデータソースは2つある直接アクセスクラスのデータメンバー パラメータ 16.returnとexitの違い
exit()
は、プロセスを終了する関数です.プロセスで使用されているメモリ領域が削除され、エラー情報が返されます.
exitは関数の戻り値タイプを考慮する必要はありません.
exit(0)-正常な終了を示し、0以外の場合は非常に終了しています.
簡単には使えない.
return
関数の値を返します.キーワードです.
16.親ポインタが子オブジェクトを指す場合
17.ヘッダファイルのインポート
2つの方法がありますカッコの文は、システムヘッダファイルをインポートするために使用されます. 引用符付き文は、プロジェクトのローカルヘッダファイルをインポートすることを示します.
この章のまとめ:プロセスプログラミング向け:関数第1、データ第2 オブジェクト向けプログラミング:データ第1、関数第2 メッセージ、メソッド、selfポインタおよびその3つの関係 クラスにnewメッセージを送信すると、新しいオブジェクト が作成される.良いソフトウェアエンティティは、拡張オープンに対応し、修正に対して閉じます.
2{}の理解
3.メソッド宣言
5.
1.@implementation
クラスに実装コードが提供されることを示すコンパイラ命令.
2.次に、各メソッドの定義です.宣言の順序で表示する必要はありません.宣言にないメソッドを実装することもできます.
3.@interfaceと@implemention間のパラメータ名が異なり、異なる必要があります.
宣言先:-(void)setFillColor:(ShapeColor)fillColor;
実装:-(void)setFillColor:(ShapeColor)c
{
fillColor = c;
}
実装では、パラメータ名とインスタンス変数の名前を区別する必要があります.最も簡単な方法は、パラメータを再命名することです.
4.ocメソッドを呼び出すと、隠しパラメータ(self)が受信オブジェクトに渡され、このパラメータは受信オブジェクトを参照する.このパラメータ伝達プロセスは秘密で自動的であり,プログラマは実現する必要はない.すなわち、クラス内のメソッドは、インスタンス変数の値を直接使用することができる.
6.インスタンス化:オブジェクトにメモリを割り当て、これらのメモリにデフォルト値を保存します.
7.idタイプ変数
8.実装クラスの3つのステップ
スーパークラス、データメンバー、メソッド;
スーパークラスでは、NSObject、NSObjectのサブクラスがよく使用されます.
9.
NSLog(@"%@“);
最初の@は、NSStringタイプのオブジェクトが出力されることを示します.
後の%@はocの任意のタイプのオブジェクトを表します.
10.
Car *car;//Carオブジェクトのポインタを定義
car =[Carnew];//5つの空のポインタを含むCarオブジェクトを生成し、Carオブジェクトポインタにアドレスを割り当てます.
new=alloc+init初期化状態を変更するにはinitを書き換える.
11.
Initはすべてのデータメンバーを初期化します.
2つのデータソース、1つはスーパークラス、1つは自身で追加されます.
if(self = [ super init ])
12.new,init関数の区別
[engine new] = [[engine alloc]init]
13.
NSLog(@"%@",engine);//cocoaクラスにdescriptionメソッドを追加すると、nslog()がオブジェクトを出力する方法をカスタマイズできます.
結果は:i have an engine
@interface Engine : NSObject
{
}
//-(void)print;
-(NSString *)description;
@end
@implementation Engine
-(NSString *)description
{
return (@"i have an Engine");
}
//-(void)print
//{
// NSLog(@"this is an Engine");
//}
@end //Engine
14. アクセスメソッド
特定の属性の読み取りまたは変更に使用する方法
修正方法(mutator method)
オブジェクトの状態を変更する方法
クラスのオブジェクトメソッドです.
理解:
setter:オブジェクト内の属性に値を割り当てます.
getter:オブジェクトのプロパティを読み込む方法を提供します.
他のオブジェクトのプロパティを操作する場合は、他のオブジェクトのプロパティを直接操作するのではなく、オブジェクトが提供するアクセス方法を常に使用します.
アクセスメソッドは常にペアで表示され、ペアで表示されなくてもよい.
使用規則:
setter:
set+属性名
getter:
属性名
get接頭辞は使用されません.cocoaには特別な意味があります.ポインタをパラメータ伝達関数として返し値を取得します.
配列操作アクセス方法の本質:
15.クラスのオブジェクトのメソッドのデータソースは2つある
exit()
は、プロセスを終了する関数です.プロセスで使用されているメモリ領域が削除され、エラー情報が返されます.
exitは関数の戻り値タイプを考慮する必要はありません.
exit(0)-正常な終了を示し、0以外の場合は非常に終了しています.
簡単には使えない.
return
関数の値を返します.キーワードです.
16.親ポインタが子オブジェクトを指す場合
17.ヘッダファイルのインポート
2つの方法があります
この章のまとめ: