Чем отличаются эти декларации ObjC: что это на самом деле делает? - PullRequest
0 голосов
/ 29 июня 2010

Я пытаюсь понять, что это делает в каждом конкретном случае.Может кто-нибудь объяснить, что первый случай делает подробно и чем он отличается от второго?Спасибо //:)

//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;
}

1 Ответ

3 голосов
/ 29 июня 2010

Первая - это отдельная функция;это не связано с классом.Вы бы назвали это следующим образом:

NSManagedObjectModel *retVal = mom();

Второе - это определение метода экземпляра, и поэтому оно определяется в контексте класса.Вы бы назвали это как:

NSManagedObjectModel *retVal = [someObject mom];
...