2010-06-29 63 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];