2010-06-29 77 views
0

我試圖理解這是在每種情況下做什麼。有人可以解釋第一個案例在細節上做了什麼,以及它與第二個案例有何不同?謝謝// :)這些ObjC聲明是如何不同的:即這是真的在做什麼?

//declare in first case 
NSManagedObjectModel *mom(); 

NSManagedObjectModel *mom() { 
static NSManagedObjectModel *mom = nil; 
//implementation goes here... 
return mom; 
} 

//no declaration in second case 
- (NSManagedObjectModel *) mom { 
static NSManagedObjectModel *mom = nil; 
//implementation goes here... 
return mom; 
} 
+0

那麼,第一個代碼示例是無效的,對於初學者。此外,一個似乎是一個功能,另一個是一個方法,所以區別不是「沒有聲明」。方法可以像函數一樣聲明。 – Chuck 2010-06-29 19:46:13

+0

@確認它是;它是一個名爲'mom'的C函數,它返回一個'NSManagedObjectModel *'。 – 2010-06-29 19:58:30

+0

是否可以實現沒有括號的C函數? – Yuji 2010-06-29 20:15:28

回答

3

首先是一個獨立的功能;這不是綁在一個班上。你會這樣稱呼它:

NSManagedObjectModel *retVal = mom(); 

第二個是實例方法的定義,因此是在類的上下文中定義的。你會這樣稱呼它:

NSManagedObjectModel *retVal = [someObject mom];