中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

OC基礎之-Property(屬性)和點語法

發布時間:2020-07-15 04:19:07 來源:網絡 閱讀:354 作者:終結者初學 欄目:開發技術
  1. 學習屬性之前回憶一下之前學到的setter方法和getter方法:

    (1)setter方法的作用:用來為單一的實例變量賦值(只能是一個實例變量,多了的叫做get方法)

    (2)setter方法的寫法標準: - 號方法,  無返回值,   名字以set開頭+要設置的變量的實例變量名(首字母需大寫):(setter方法有且只有一個參數)+參數的類型(和實例變量的類型相同)+參數名(和實例變量名相同)

    (3)getter方法的作用:用來獲取單一實例變量的值.

    (4)getter方法的寫法標準: - 號方法,  有返回值(返回值類型和實例變量類型相同)  方法名直接和實例變量名相同 無參數

  2. 當實例變量較多的時候,用setter方法和getter方法會很不方便,代碼量也加大,所以就有了屬性的出現.屬性是OC2.0之后出來的新的語法,用來替代setter和getter方法,使用屬性可以快速創建setter和getter方法的聲明,以及setter和getter方法的實現.此外,屬性還添加了對實例變量操作的安全處理.

    (1)屬性的寫法標準: @property(用來定義屬性)   屬性的類型(和實例變量的類型相同)  屬性名(和實例變量名相同)

    (2)注意:@property  知識自動聲明setter和getter方法的聲明

  3. 屬性的三大特性:

    (1)第一大特性:讀寫特性

         readonly   告訴編譯器,屬性在自動生成方法時,只會生成getter方法,不會生成setter方法

         readwrite  告訴編譯器,屬性在自動生成方法時,既要生成setter方法,也要生成getter方法,為系統默認的讀寫特性.

         setter = aa;  告訴編譯器,當自動生成setter方法時,setter方法的方法名為指定的名字aa,而不采用默認的

         getter = bb;  告訴編譯器,當自動生成getter方法時,getter方法的方法名為指定的名字bb,而不是采用默認的

    (2)第二大特性:原子性特性

         atomic : 原子特性,保證線程安全,內部做了安全處理(枷鎖與解鎖).為系統默認的原子特性.

         nonatomic : 非原子性,不保證線程的安全,因為對于setter和getter方法的使用,比較頻繁,在一段時間內可能要多次訪問,所以使用atomic會非常消耗系統的資源,降低程序的執行效率,使用nonatomic雖然不能保證線程的安全,但是一般情況下得使用都是安全的,所以對于原子特性,使用nonatomic

    (3)第三大特性:語義特性

         assign : 直接賦值,針對于基本數據類型使用,也可以針對對象類型使用,為系統默認的語義特性

         copy : 針對對象類型使用,并且要服從NSCopying協議的對象才可以,會復制出一個新的對象,擁有新的對象所有權(引用計數+1)(暫時理解到這里)

         retain : 針對對象類型使用,會造成對象的引用計數+1.

  4. 屬性的實現:

    (1)寫法標準:@synthesize  屬性名  =  實例變量(指定的setter和getter方法內部所要操作的實例變量)

    (2)如果標準寫法中指定的實例變量沒有定義,系統會自動生成指定的實例變量,但是生成的實例變量是私有的,子類不能直接訪問,如果實例變量想讓子類訪問,那么在.h文件中必須定義實例變量.

    (3)如果未指定setter和getter內部所要訪問的實例變量時,系統會自動生成一個和屬性名一樣的實例變量.

    (4)對于setter和getter方法,如果我們實現了,系統就不會再自動生成

    (5)如果在.m文件中未通過@synthesize對屬性進行合成,系統會自動合成,只不過此時系統默認的setter和getter方法內部所操作的實例變量是 _屬性名

    (6)如果將@synthesize省略,我們自己實現setter和getter方法時,系統就不會生成對應的setter和getter方法,以及實例變量.

    (7)常用的是只在.h文件中聲明屬性,其他的系統自動生生成.

  5. 點語法,是一種快速訪問setter和getter方法的方式(類似于之前的結構體變量訪問結構體成員)

    寫法標準:對象名.屬性名   -----如果放在等號的左邊,就是調用setter方法,其他情況都是調用getter方法

  6. 聲明屬性時默認生成對應的setter和getter方法,所以屬性和setter及getter方法都有關聯.

向AI問一下細節

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

AI

灵武市| 沂源县| 巨野县| 天镇县| 会理县| 门源| 金门县| 平乐县| 特克斯县| 饶阳县| 土默特右旗| 兰坪| 华池县| 彝良县| 平原县| 阜城县| 荣昌县| 松原市| 洛扎县| 景德镇市| 石家庄市| 永靖县| 泰宁县| 南川市| 嘉峪关市| 桐乡市| 祁东县| 金塔县| 论坛| 大安市| 内乡县| 博罗县| 巫山县| 汉寿县| 和平县| 铅山县| 定南县| 睢宁县| 古交市| 博客| 澄迈县|