objective-c(初始化)

來源:互聯網
上載者:User

標籤:style   io   ar   color   使用   sp   strong   檔案   on   

objective-c(初始化)

 


建立對象
 (程式設計語言 Objective-C 2.0)

 

1.類對象與執行個體化

          類的定義完成後,編譯器在記憶體中自動產生唯一的類對象,執行個體對象都是通過調用類對象的類方法產生的。

          類對象是工廠,同時也是藍圖,執行個體對象是產品

 

 建立對象的基本步驟

 

使用 Objective-C建立對象需要兩個基本步驟:

  

 

Allocation(記憶體配置)   :為新的對象動態分配一段記憶體位址 

Initialization(初始化):為這段記憶體空間中填上合適的初始值

 

    

    只有這兩個步驟都完成後,這個對象才能夠真正的開始行使功能

    建立對象的基本步驟

    兩個步驟在代碼中是分別完成的 但是通常我們將它們合起來一次完成:

    id anObject = [[Rectangle alloc] init];

    將建立對象的兩個步驟分開使得我們可以對這兩步過 程分別進行控制記憶體配置

 

2.初始化方法的傳回值

 

    Allocating Objective-C  NSObject 中,

    提供了兩個預設記憶體配置方法:

    +alloc

    +allocWithZone:isa

    記憶體配置方法初始化了新對象的

    變數,並將其它所 記憶體配置方法不應該被複寫或進行改動

 

    有變數的值都置為初始化方法的傳回值

    通常情況下,初始化方法對接收方對象的執行個體變數進 行初始化,然後將對象本身返回

    初始化方法的主要職責是要保證它返回的對象在使用 時不會出現錯誤初始化方法的傳回值

     

    但有時,初始化方法無法正常執行它被要求執行的功 能

    1:檔案訪問錯誤 有時,初始化方法返回的對象並不是接收者對象本身

  

    2:對象重名

   

    

    基於上述原因,程式應當使用由初始化方法返回的對 象,而不是直接使用由記憶體配置方法返回的對象

    下面的代碼是非常危險的,因為它完全忽視了初始化方法的傳回值狀態:isa

    id anObject = [SomeClass alloc]; 

    [anObject init]; 

    [anObject someOtherMessage];

    

    為了安全地初始化新對象,應該把記憶體配置方法和初 始化方法結合起來使用:

    id anObject = [[SomeClass alloc] init]; 

    [anObject someOtherMessage];

    

    如果初始化方法有可能返回nil,則還需要做檢查處

    理:

    id anObject = [[SomeClass alloc] init]; 

    if ( anObject )

         [anObject someOtherMessage];

    else ...

 

3.初始化方法的實現

    

    當新對象被建立伊始,除了它的

    變數外,它在記憶體中的所有位都被置

    有時,這樣的初始化對於一個對象來說就夠用了

    但絕大多數的時候,還需要對對象的其它變數賦予初 始值才能保證它能夠開始被使用

    在這些情況下,需要實現自訂初始化

 

 

objective-c(初始化)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.