Почему мне не нужен ivar для этого свойства Core Data?

Что здесь происходит с исходным кодом, благодаря чему мне не нужно объявлять managedObjectContext как ivar? Где __managedObjectContext существует? Что такое префикс двойного подчеркивания?

Заголовок

@interface CAHistoryController : NSObject {}

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;

@end

Реализация

@implementation EBHistoryController

@synthesize managedObjectContext=__managedObjectContext;
- (NSManagedObjectContext *)managedObjectContext
{
  if (__managedObjectContext != nil)
  {
    return __managedObjectContext;
  }
  // ...etc
}

person Kenny Winker    schedule 26.07.2011    source источник


Ответы (2)


@synthesize расширила возможность автоматического синтеза связанного хранилища в относительно недавнем выпуске компилятора (на самом деле, не столь свежем, хотя симулятор изначально не поддерживал этот шаблон).

person bbum    schedule 26.07.2011

@synthesize без части = ‹somename› сгенерирует ivar с тем же именем, что и имя свойства. Когда вы делаете = ‹somename›, вы говорите ему создать ivar с другим именем.

person SVD    schedule 26.07.2011