2012年5月1日 星期二

產生物件的類別method

很多時候,我們會另外定義類別method來快速地生成物件。比方於類別Animal裡定義create method。


有一點十分特別, 在類別method裡我們竟看到self的蹤跡。此時self代表類別物件。比方我們另外有個繼承自Animal的Dog類別,當我們呼叫以下程式碼時
[Dog Create];
最後將呼叫定義於Animal裡create method,而此時的self將是Dog類別,因此我們才能順利建出Dog物件,而不是四不像的Animal物件。

關於產生物件的類別method,還有一點值得注意,當牽扯到ARC時,回傳的物件是否由autorelease pool管理,取決於method名稱的開頭。只要method名稱不是以alloc, new, copy開頭時,回傳的物件即由autorelease pool統一管理。


因此,在以上的例子裡,我們將看到在viewDidLoad end被印出前,allocByGod,copyByGod, newByGod建立的物件都先一步結束生命。唯有createByGod建立的物件一息尚存,還被autorelease pool保護著,因此在viewDidLoad end後才結束生命。

沒有留言:

張貼留言