0

这是一个代码示例来说明我的意思:

- (void) setup {
  [self setupObjectModel];
  [self setupStoreCoordinator];
}

- (void) setupObjectModel {
  NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
  self.managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] autorelease];
}
4

1 回答 1

1

如果managedObjectModel是一个strong属性或使用属性定义retain,setter 将自动保留传递的参数,因此autorelease它将防止内存泄漏(如果你不这样做,NSManagedObjectModel虽然只managedObjectModel指向它,但保留计数将为 2。 )

这相当于

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

假设 setter 具有默认行为

于 2012-09-27T19:37:51.673 回答