盤點iOS開發中property屬性常用關鍵字

來源:互聯網
上載者:User

標籤:des   blog   c   java   http   a   

一、關鍵字說明

1、@synthesize:自動產生成員變數相應的存取方法,可以使用點文法操作該變數的存取。

2、@implementation:  表明類的實現  ,以@end 結束。

3、self  :類似java語言當中的this ,是隱藏指標  指向接受訊息的對象的指標 。訊息所調用的方法使用該指標參數尋找它要使用的執行個體。

4、super : 調用父類的方法 。    self = [ super init];  判斷是否可以成功初始化 如果父類成功初始化 那麼將會賦值給 self  ,這樣self 是一個非Null 物件。 它不是參數也不是執行個體變數, 向super 發生訊息的時候,實際上是在請求oc向該類的超類 發送請求 ,如果超類中沒有定義的訊息,oc將按照繼承的普通規則在繼承鏈中進行尋找。

 

    繼承當中隱藏指標isa  與  super關鍵字 兩張圖片來示範:

 

 

 

5、#imoprt  與c語言當中的#include有類似的作用 ,告訴前置處理器將標頭檔的內容包含到本檔案的.oc中 ,並且保證標頭檔只會被包含一次 。

 

6、@interface   聲明包含一個 XXX 類 ,與@implementation 一樣 ,以@end結束。

7、: 表示繼承  後面跟的是父類 。oc是單繼承的機制  ,這裡跟出c++是不一樣的。

8、@property  關鍵字   設定成員變數的屬性 (讀/寫    賦值 assign retain copy  ,支援多線程的非原子訪問nonatomic)

 

二、 方法的聲明

  1、 聲明一個方法 格式是:

    -(傳回值)方法關鍵字 1 :(參數類型)參數名 方法關鍵字2 :(參數類型)參數名 ……  (在讀方法的時候 ,找方法關鍵字來確定參數)

  2、-號是執行個體方法 +號是類方法

  3、另一個初始化的方法中 調用 已有的初始化方法  這種方法被稱為是 Designated initializer

 

三、輸出資料流

    NSlog是OC中的標準輸出 ,附加輸出 當時的時間 應用程式的名稱 ,使用Nslog()輸出任意對象的值時  都會使用%@格式說明 ,在使用這個說明符時  對象通過調用一個名為description的方法提供自己的NSlog()格式

 

 

四、getter / settter 方法

  對象.屬性:使用@property配合@synthesize  可以讓編譯器自動實現 getter/setter方法 ,很方便  可以直接使用”對象 屬性“的方法調用

  對象.方法:如果想要調用”對象.方法“的方式來調用一個方法並擷取到方法的傳回值  需要使用@property配合@dynamic  使用@dynamic 關鍵字是告訴編譯器由我們自己來實現存取方法 。

 

五、屬性的設定

  1、readonly 此標記說明屬性是唯讀 ,預設的標記是讀寫 ,如果指定了制度 在@implementation中只需要一個讀取器  或者你使用@synthesize關鍵字 ,也是有讀取器方法被解析 而且如果試圖使用點操作符 為 屬性賦值 ,那麼將會出現編譯錯誤。

 

  2、readwrite 此標記說明屬性會被當成讀寫的  這也是預設的屬性  設定器和讀取器都需要在@implementation中實現 ,如果使用@synthesize關鍵字 讀取器和設定器都會被解析

 

  3、nonatomic 非原子性訪問 對於屬性賦值的時候不加鎖 ,多線程並發訪問會提高效能,如果不加此屬性 則預設是兩個存取方法都為原子型事務訪問。

 

  4、atomic 和 nonatomic用來決定編譯器產生的getter和setter是否為原子操作 ,atomic 設定成員變數的@property屬性時  預設為是atomic 提供安全執行緒 。在多線程環境下 ,原子操作是必要的 否則會引起錯誤的結果 。加了 atomic,setter函數會變成下面這樣:

 

 

        {lock}

        if(property != newValue){

          [property release];

          property = [newValue retain];

        }

        {unlock}

    nonatomic 禁止多線程,變數保護 提高效能 。atomic 是OC 使用的一種線程保護技術 ,基本上來講 就是防止在  寫   未完成的時候  被另外一個線程讀取 ,造成資料錯誤。而這種機制是耗費系統資源的 ,所以在iPhone這種小型裝置上  如果沒有使用多線程間的通訊編程  那麼 nonatomic是一個非常好的 選擇。      訪問器是原子操作 ,這也就是說 在多線程環境下,解析的訪問器提供一個對屬性的安全訪問 ,從擷取器得到的傳回值或者通過設定器設定的值可以一次完成,  即便是別的線程也正在對其進行訪問。 

 

 

 

 

 

    

 

    

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.