这些ObjC声明是如何不同的:即这是真的在做什么?
问题描述:
我试图理解这是在每种情况下做什么。有人可以解释第一个案例在细节上做了什么,以及它与第二个案例有何不同?谢谢// :)这些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;
}
答
首先是一个独立的功能;这不是绑在一个班上。你会这样称呼它:
NSManagedObjectModel *retVal = mom();
第二个是实例方法的定义,因此是在类的上下文中定义的。你会这样称呼它:
NSManagedObjectModel *retVal = [someObject mom];
那么,第一个代码示例是无效的,对于初学者。此外,一个似乎是一个功能,另一个是一个方法,所以区别不是“没有声明”。方法可以像函数一样声明。 – Chuck 2010-06-29 19:46:13
@确认它是;它是一个名为'mom'的C函数,它返回一个'NSManagedObjectModel *'。 – 2010-06-29 19:58:30
是否可以实现没有括号的C函数? – Yuji 2010-06-29 20:15:28