標籤: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(初始化)