iOS開發:類的'生命周期'
光有新學IOS的朋友問我為什么要 [[*** alloc]init],今天就專門來說一下一個類的“生命周期”~~~.
要使用某個類的對象呢,當然首先必須先得到一個指向該對象的變量。
例如:
Class *classInstance;
在oc中,這個變量的變量名就是classInstance了,類型就是指針,指向某個Class類的實例。
但是,這只是聲明的代碼,而不是創建了Class實例。
一個對象的生命周期是從創建開始,然后接受消息,最后在不需要的時候唄釋放掉。
而怎么創建對象呢? 我們通過向類發送alloc消息,就可以創建對象了。一個類收到了alloc消息后,就會在內存中創建對象,并且返回一個指向新對象的指針,我們可以把指針保存在某個變量里。
例如:
Class *classInstance = [Class alloc];
這樣就創建了一個Class類的實例,并且將返回的對象指針賦給了classInstance變量。這樣我們就得到一個指向某個實例的指針,就能向它發送消息了。
但是,這樣我們就能使用了嗎?當然不是了。雖然向類發送alloc消息能夠創建實例,但是在沒有完成初始化之前,新創建的實例是無效的。所以對新創建的實例,必須先向它發送一個初始化消息。
即:
[classInstance init];
而init返回的也是指針,和alloc消息一樣,都指向新創建的對象,所以我們可以嵌套消息發送,先讓其收到alloc消息創建對象,然后再收到init消息完成初始化。
即:
Class *classInstance [[Class alloc] init];
正如開頭所說的,完成了一個類的創建。
而釋放對象代碼就比較簡單了,(實際很復雜,著就不多說了 - -)
classInstance = nil ;
nil是值為0的指針,即java中的null,C里的NULL。一般表示不指向任何對象。
好吧,今天簡單的稍微說到這里。