OC中建立對象的方法有兩種:
[類名 new]
[[類名 alloc] int]
分配和初始化是兩個分離的操作:來做NSObject的類方法alloc為對象分配一塊記憶體地區並將其清零,執行個體方法init用於獲得一個對象並使其運行
一、指派至
分配:allocaton [,æləu'keiʃən] n. 分配,配置;安置:從作業系統獲得一塊記憶體並將其指定為存放對象執行個體變數的位置
alloc:某個類發送alloc訊息時就是為該類分配一塊足夠大的記憶體,以存放該類的全部執行個體變數,同時alloc方法分配這塊記憶體初始化都為0。例如:所有的BOOL類型變數初始化為NO,所有的int類型被初始化為0,所有的float類型變數被初始化為0.0,所有指標被初始化為nil。
注意
對象必須先分配再初始化最後才能使用
二、初始化對象
1、初始化initialization [i,niʃəlai'zeiʃən, -li'z-] n. 初始化;賦初值 :從作業系統中取得一塊記憶體用於儲存物件(初始化)
使用方式:
Car *car= [[Car alloc] init];
2、編寫初始化方法
-(id) init{ if(self=[super init]){ engine=[Engine new]; tires[0] =[Tires new]; tires[1]=[Tires new]; tires[2]=[Tires new]; } return (self);}
說明:
該聲明中最新啟動並執行是[super init],它的作用是使超類完成它們自己的初始化工作,之後使子類有機會實現初始化(如果[super init]不為nil)。最後將[super init]傳回值賦給self。
記住:這個賦值操作只會影響該init方法中self的值不會影響該方法以外的任何內容
三、初始化函數
定義:
指定初始化函數:通常接受參數最多的初始化方法最終成為指定初始化函數
規則:
1、不需要為你自己的類建立初始化函數方法
2、如果構造一個初始化函數則一定要在你自己的指定初始化函數中調用超類的指定初始化函數
3、如果初始化函數不止一個,則要選擇一個作為初始化函數。被選定的方法應該調用超類的指定初始化函數
四、總結
在初始化方法中,需要調用自己的指定初始化函數或超類指定的初始化函數。一定要將超類的初始化函數的值賦給self對象並返回給初始化方法的值。超類可能決定返回一個完全不同的對象。