[好プログラマトレーニングキャンプ]Objective-C学習ノート----点文法

6453 ワード

<A href=「http:/***/」targt=「blank」iosトレーニング------私のOC言語メモは、あなたとの交流を期待しています.  
 
 
javaなどの対象に向けた言語では、obj.メソッドを用いたり、obj.属性を用いてオブジェクトを呼び出す方法や属性が用いられます.OCは他の言語を使うプログラム設計者がOCをよりよく勉強するために、OCも文法を導入しましたが、基本的にはOCの点文法とjavaなどの言語の点文法には違いがあります.
 1  @interface Person:NSObject{  2  @private

 3      int age;  4  }  5 

 6  -(void)setAge:(int)Newage;            //  setter  

 7  -(int)age;                                     //  getter  

 8  @end

 9   

10  @implementation Person                //  setter getter  

11 -(void)setAge:(int)Newage{ 12    age = Newage; 13 } 14 

15 -(int)age{ 16     return age; 17 } 18 int main(int argc, const char * argv[]) { 19     Person * xiaoming = [Person alloc]; 20   

21     xiaoming.age = 21;                       //        age   

22    NSLog(@"%d",xiaoming.age);         //         age  

23     

24     return 0; 25 }
上のコードの中で、xiaoming.ageは実際に関数を呼び出しました.次にxiaoming.ageを印刷すると[xiaoming age]を呼び出します.したがって、問題の本質は、このフィールドに対応するsetterとgetter関数をシステムが自動的に呼び出します.このフィールドに対応するsetterとgetter関数はこのようなものです.もし私たちのフィールド名がageであれば、対応するgetterとsetter関数の形式は:
-(int)setAge:(int)Newage;
-(int)age;
私たち自身の声明とセターまたはゲッター関数の実現に加えて、コンパイラにこの二つの関数を実現させてもいいです.コードを見てください.
 1 @interface Person:NSObject{  2 @private

 3     int age;  4 }  5 @property int age;                //       age   getter    setter   

 6 @end

 7 

 8 @implementation Person  9 @synthesize age;                  //       age   getter  setter   

10 @end

11 int main(int argc, const char * argv[]) { 12     Person * xiaoming = [Person alloc]; 13 

14     xiaoming.age = 21; 15 

16    NSLog(@"%d",xiaoming.age); 17     

18     return 0; 19 }
このコードの5行目の文はコンパイラに教えます.ageに対応するgetter関数とsetter関数を宣言してください.9行目の文はコンパイラにあなたがage対応のgetterとsetter関数を実現するように教えてください.そうすると、自分で字句を書く必要がないsetterとgetter関数です.もちろんです.あなたも自分で下でsetterまたはgetter関数を書き直して、追加したい内容を追加してもいいです.
 
備考:ブログに存在する不足や間違いを指摘してください.私のQQ番号は993371649です.