物件的初始化

2021-07-08 17:57:06 字數 708 閱讀 4447

分配與初始化

物件的初始化有兩種方法:一種是[類名new], 第二種是[[類名 alloc]init]。這兩種方法是等價的,不過,通常的cocoa慣例是使用alloc和init,而不使用new.一般情況下,cocoa程式設計師只是在他們不具備足夠的水平來熟練使用alloc和init方法時,才將new作為輔助方法使用。

[[類名alloc]init]有兩個動作。alloc是分配動作,是從作業系統獲得一塊記憶體並將其指定為存放物件的例項變數的位置。同時,alloc方法還將這塊記憶體區域全部初始化為0。與分配動作對應的是初始化。有如下兩種初始化寫法。

寫法1  car *car =            [[classalloc] init];

寫法2   car            *car = [car alloc];

[car            init];

應該使用第一種寫法,因為init返回的物件可能不是以前的那個。

2.編寫初始化方法

下面是一段初始化的**

-(id)init

if(self = [super            init]){

engine =[engine            new];

使用self= [super init]的作用是使超類完成它們自己的初始化工作。同時因為init可能返回的是不同的物件,例項變數所在的記憶體位置到隱藏的self引數之間的跳離又是固定的,所以要這樣使用。

物件初始化

在oc中使用alloc後,會分配到一塊記憶體塊,同時這塊記憶體塊會被清零,所以初始化函式init是不需要再做置零的操作的。在oc中,應該在alloc後就呼叫初始化函式init,使用new可以達到這個效果,但new不是oc的風格。物件在init時,應該先使用其父類的init,然後再使用自己的init行...

物件初始化

我們知道當使用new關鍵字建立乙個物件的時候,會呼叫相應的建構函式對該物件進行初始化,那麼這個過程中到底都還有什麼事情呢?先看一段 當執行語句 student stu new student zhangsan 17 執行該語句的時候在記憶體中程式都做了什麼事情,讓我們一一枚舉出來 1 因為new用到...

物件初始化

每乙個物件都應該在建立之時就有確定的內容,否則就失去了物件的意義了。定義乙個物件,在系統為其分配記憶體時,應該同時對有關的資料成員賦初始值。首先,不能在類宣告中對資料成員初始化。因為類不是實體,而是抽象型別,不占用記憶體而無處容納資料。如果類中資料為私有或受保護的,則不能在定義物件時賦初值。time...