这是一个代码示例来说明我的意思:
- (void) setup {
[self setupObjectModel];
[self setupStoreCoordinator];
}
- (void) setupObjectModel {
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
self.managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] autorelease];
}
最佳答案
万一managedObjectModel
是 strong
属性或用属性 retain
定义,setter 将自动保留传递的参数,因此 autorelease
这样做可以防止内存泄漏(如果不这样做,NSManagedObjectModel
的保留计数将为 2,尽管只有 managedObjectModel
指向它。)
这相当于
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
假设 setter 具有默认行为
关于objective-c - 为什么在 Objective-C 中一个人会自动释放自己的属性(property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628765/