2011-05-13 102 views

回答

4

它們在date方法中初始化。這是在Objective-C中創建自動釋放對象的常用方法。這種形式的分配者稱爲便利分配者。

要詳細瞭解,請閱讀蘋果的可可核心能力文檔中關於創建對象的「工廠方法」的段落:http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCreation.html

要創造便利分配給你自己的類,實現一個類的方法,你的類的名字命名(沒有前綴)。例如: -

@implementation MYThing 
... 

+ (id)thing 
{ 
    return [[[MYThing alloc] init] autorelease]; 
} 

... 
@end 
+0

我怎樣才能知道什麼時候可以用這種方式使用類?謝謝。 – lampShade 2011-05-13 13:19:10

+1

基本上,您可以通過查看方法聲明中的方法名稱和「+」號找到方便的分配器。名稱通常是沒有前綴的類名,加號表示它是一個類方法。蘋果公司爲他們提供了許多課程。一些突出的例子:[NSString stringWithFormat:],[NSNumber numberWithInt:],... – 2011-05-13 13:26:48

+2

約定是名稱不以「alloc」,「new」,「copy」或「mutableCopy」開頭的方法返回自動釋放對象 – albertamg 2011-05-13 13:28:14

1

today是靜態日期調用內部初始化(和自動釋放)。

0

您只需通過調用alloc就您已分配的對象調用init…方法。 alloc只保留對象所需的空間,創建一個單元化的對象。

未初始化的對象將所有實例變量設置爲零,零或等效類型。除了保留計數設置爲1.

返回對象的所有其他方法都保證返回完全初始化的對象。 alloc是例外。

絕不可以對已經初始化的對象調用init…方法。簡單的規則是使用alloc - init…之間的1對1關係,就是這樣。

0

兩部分。

首先,正如其他人所提到的,一個方法可以在返回對象之前初始化並自動釋放對象。這是部分這裏發生了什麼。

另一部分是它是如何定義的。請注意大多數Objective C定義是如何以-開頭的?你提到的那個沒有。簽名是這樣的:

+ (NSDate*) date; 

也就是說,這是一個方法,適用於該類作爲一個整體,而不是這個類的一個實例。

相關問題