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
    @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つある
  • 直接アクセスクラスのデータメンバー
  • パラメータ
  • 16.returnとexitの違い
    exit()
    は、プロセスを終了する関数です.プロセスで使用されているメモリ領域が削除され、エラー情報が返されます.
    exitは関数の戻り値タイプを考慮する必要はありません.
    exit(0)-正常な終了を示し、0以外の場合は非常に終了しています.
    簡単には使えない.
    return
    関数の値を返します.キーワードです.
    16.親ポインタが子オブジェクトを指す場合
    17.ヘッダファイルのインポート
    2つの方法があります
  • カッコの文は、システムヘッダファイルをインポートするために使用されます.
  • 引用符付き文は、プロジェクトのローカルヘッダファイルをインポートすることを示します.

  • この章のまとめ:
  • プロセスプログラミング向け:関数第1、データ第2
  • オブジェクト向けプログラミング:データ第1、関数第2
  • メッセージ、メソッド、selfポインタおよびその3つの関係
  • クラスにnewメッセージを送信すると、新しいオブジェクト
  • が作成される.
  • 良いソフトウェアエンティティは、拡張オープンに対応し、修正に対して閉じます.