91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Objective-C(4)成員變量的包裝---屬性

發布時間:2020-07-04 07:26:34 來源:網絡 閱讀:308 作者:ymanmeng123 欄目:移動開發
  • 成員變量的getter/setter方法

成員變量的編程規范:

    以_開頭,并使用能夠表示其含義的單詞

    遵循駝峰規則:如果是多個單詞的組合,則除第一個單詞外每個單詞首字母大寫


成員變量的權限:

    基于面向對象的封裝特征,很少將成員變量直接暴漏在外,權限一般為@protected或@private

    如果在類的外部想要訪問成員變量,則應提供方法接口。


getter方法:

     作用:返回對象內部的成員變量

     命名規范:方法名與成員變量名一致。

     有返回值,類型與成員變量一致,不需要接受任何參數

setter方法:

     作用:提供一個方法給外界設置成員變量值,可以在方法里面對參數進行過濾

     命名規范:以set開頭,后面跟成員變量名(首字母大寫)

     返回值一定是void,接受一個參數且與成員變量類型相同

     形參名不要和成員變量一樣

     如果一個成員變量是只讀的或者不提供直接修改的方法,則不提供setter方法即可


  • @property關鍵字

一般情況下,我們要為每個成員變量設置getter方法以及setter方法,隨著一個類中成員變量數量的增大,會產生大量重復性的代碼;

@property關鍵字減少了我們這種重復性代碼的編寫,即@property幫助我們在接口中快速聲明getter方法及setter方法。

    Objective-C(4)成員變量的包裝---屬性


  • @synthesize關鍵字

@property關鍵字

     在接口中快速生成getter/setter方法的聲明

@synthesize關鍵字

     在實現中快速生成getter/setter方法的定義

    Objective-C(4)成員變量的包裝---屬性

蘋果公司提倡工程師去實現 那些核心代碼,而垃圾代碼交給 編譯器去完成


  • 屬性

從Xcode4.5開始,@synthesize的功能被@property包攬,且其管理的成員變量也不需要聲明

    即:@property可以直接聲明一個成員變量并實現其getter/setter方法

使用@property聲明的成員變量,稱之為屬性。

屬性所管理的成員變量的訪問權限是:@private


  • 屬性的訪問方式

成員變量訪問方式:

     只能在對象的方法中方法,如self->_age

     注意:在方法中,也可以訪問同一類型的其他對象的成員變量

getter/setter方法訪問方式:

     可以在對象的方法中或者其他方法或函數中通過getter/setter訪問

    Person *pp = [Person new];
    [pp setName:@"neuedu"];
    NSLog(@“name:%@”, [pp name]);

點語法訪問:     

    可以使用點語法簡化方法的調用:

    pp.name = @"neuedu";
    NSLog(@"name:%@", pp.name);

     點語法的引入在簡化了 方法調用的同時降低了 對工程師的要求

     注意與pp為指針,取 成員應使用->,要注意 區分


  • @property的參數

@property可以帶一些參數,來限定屬性的一些特性

     @property參數有五類,每一類都一個默認值,且只能有一個值

1)是否提供setter方法

     readonly: 只生成get方法

     readwrite:生成set方法及get方法(默認)

     如:

@property (readonly) NSString *name;

2)內存管理相關的

     retain、strong(引用計數+1)

          ARC使用strong,非ARC使用retain

     assign、weak:直接賦值(引用計數不變)

          非ARC使用assign

          ARC中OC對象使用weak,非OC對象使用assign

     copy:用于深拷貝(新的),引用計數為1

          一般用于NSStirng

3) 多線程原子操作

     nonatomic: setter方法時不要加上多線程鎖的代碼

     atomic: setter方法時加上多線程鎖的代碼(默認)

     在單線程的情況下,應這樣定義:

@property (nonatomic,readonly) NSString *name;

4)指定setter/getter方法名

     用@property聲明的屬性,會自動生成方法,同時也可以指定一個自定義的方法

     如:

@property (getter = abc, setter= setAbc:) int age;

     其實并不推薦這樣去做,主要用在BOOL類型屬性上

     如:

     @property (getter = isRich) BOOL rich;

5)空值警告參數(Xcode7新特性)

    用于編譯器在編譯過過程中,對屬性賦值語句產生必要的警告,從Xcode6.3開始引入

     nullable:允許賦值為nil

     nonnull:不允許賦值為nil,如果做了編譯會產生警告


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

任丘市| 洪湖市| 济宁市| 呼玛县| 德兴市| 敦化市| 潜山县| 巴里| 合水县| 恩平市| 博爱县| 平凉市| 大丰市| 新田县| 台中市| 石林| 江阴市| 黑水县| 龙陵县| 西贡区| 盐山县| 榆社县| 和林格尔县| 香河县| 陕西省| 炉霍县| 玉门市| 娄底市| 甘泉县| 秦皇岛市| 高州市| 富平县| 石门县| 寿宁县| 阜阳市| 新乐市| 博白县| 南汇区| 宜州市| 邯郸市| 睢宁县|