你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發-OC言語 (六)點語法和@property

iOS開發-OC言語 (六)點語法和@property

編輯:IOS開發綜合

點語法和@property

 

知識點

 

1.setter/getter函數

2.點語法

3.@property語法和屬性

 

 

========================================

一、setter和getter函數 

  1.setter和getter函數的作用

setter  辦法:   修正對象的字段/實例變量

getter 辦法:   讀取對象的字段/實例變量

 

setter 辦法: 可以帶有多個參數,可以同時給多個變量賦值

 

getter辦法: 不帶參數,只能前往一個變量的值。

 

 

 

2.setter和getter如何命名

  setter 辦法的命名:

xxx: 表示的是成員變量的名字

 

//帶有一個參數

- (void)setXxx:(參數類型)參數1;

//帶有多個參數

- (void)setXxx:(參數類型)變量名字  xxx:(參數類型)變量名字 ……;

 

 

getter 辦法的命名:

- (前往值類型)xxx;

 

 

=======================================

二、點語法   為了讓順序設計復雜化

隱藏了內存管理細節

隱藏了多線程、同步、加鎖

 

 

2.點語法的作用

屬性可以在不適用 【對象 辦法名字】 的狀況下運用點語法

無需調用[foo value] 可以調用foo.value 來訪問. 留意跟構造體的區別

雖然foo.value 看起來像是直接訪問value變量,但是屬性一直調用

辦法,而這些辦法又可以訪問對象的數據。

 

 

3.點語法的調用

     //一個參數的set辦法可以運用點語法賦值

    [xiaoxin setName:@“小新”];

    //這不是運用成員變量,是運用set辦法

    xiaoxin.name = @"小新";

    //可以經過.語法調用get辦法

    NSString * ret = [xiaoxin name];

    //xiaoxin.name在等號右邊就是set辦法,運用這個表達式的值,就是get辦法

    ret = xiaoxin.name;

    

【注】點語法只是訪問setter getter辦法,不是運用成員變量。

 

4.點語法和setter/getter函數的關系

 

 

【點語法和[]寫法】實質一樣,異樣是發送set和get音訊,只不過寫法不同。

         

  dog.name = @“xiaobai”;

展開成: [dog setName: @“xiaobai”];

 

 

      NSString *nameString = dog.name;

展開成: NSString *nameString = [dog  name];

          

=======================================

三、屬性(@property)和分解(@synthesize)

 

1.當一個類中的成員變量十分多的時分,setter和getter能否會顯得十分臃腫,@property和@synthesize可以使代碼變得簡約。

 

2.@property用途

  1) 讓編譯器自動聲明setter和getter

  

3.@property運用

  1)  @property 成員變量類型  變量名;

 

 

4.@synthesize用途

  1)讓編譯器自動完成setter和getter函數 

 

 

5.@synthesize可以省略(Xcode4.6當前可以省略)

   //聲明一個屬性,相當於聲明了上面兩個辦法

   @property NSString * name;

   //- (void)setName:(NSString *)name;

   //- (NSString *)name;

 

    @synthesize name = _name;

    //Xcode4.6以前,需求這樣完成,好像完成了上面兩個辦法

    //Xcode4.6起,無需寫@synthesize,自動完成上面兩個辦法,會自動關聯名位_XXX的變量

    //假如類中並沒有對應的變量,會自動生成相應的變量。

 

 ======================================

@property屬性

 

1.原子操作

  atomic(缺省)/nonatomic

 

 

 

2. assign  直接賦值修飾符(缺省),普通用在根本類型。

           

        //缺省(默許)修飾符

        @property (assign) NSString * name;

         //同時生成set、get辦法

 

      直接賦值,展開的set辦法:

     - (void)setName:(NSString *)name

     {

        _name = name;

     }

 

3.讀寫操作

  readonly/readwrite(缺省)

//只讀修飾符

   //只生成getter,沒有setter

    @property (readonly) NSUInteger age;

    

 

    /缺省修飾符

    //同時生成set、get辦法

    @property (readwrite) NSString *name;

   

 

 

 

4. 給set辦法和get辦法起別名

//getter修飾符

   //給get辦法起別名

    @property (getter = myWeight) NSUInteger weight;

 

 

   //setter修飾符

   //給set辦法起別名

   @property (setter = setLife:) BOOL alive;

 

   //一個屬性可以添加多個修飾符,多個修飾符間用逗號隔開。

   @property (setter = setUsername:, getter = getUsername) NSString *name;

 

  

 

 

5. 多個屬性修飾符,需求用逗號隔開

@property (nonatomic, readonly,getter = birth) 

NSString * birthday;

 

【iOS開發-OC言語 (六)點語法和@property】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved