我了解 Objective-C 中的基本综合功能,但我不了解 Apple 在这里的功能。这显示在具有核心数据和表格 View 的项目模板的 RootViewController 中。
@synthesize managedObjectContext=__managedObjectContext;
“__”的目的是什么?当您合成一个对象并将其设置为等于另一个对象时,您在做什么,该对象在 View Controller 中的其他任何地方都没有使用,尽管它在应用程序委托(delegate)中使用?
我还注意到在 dealloc 方法中释放了 __managedObjectContext 而不是 managedObjectContext。
最佳答案
这样做的原因是为了保护程序员免受他自己的伤害。防御性编程。有时您希望通过访问器 (self.managedObjectContext
) 访问值,有时您希望直接有效地访问实例变量 (__managedObjectContext
)。
这是一个更普遍的问题,并不特定于 CoreData 或托管对象上下文。如果没有 = __managedObjectContext
部分,实例变量和它的访问器将具有相同的名称。编写 managedObjectContext = foo;
会放弃访问器和所需的 retain
的情况并不少见。随着变量名称的更改,您、您 future 的自己和代码的其他读者更可能会注意到一些问题,例如 __managedObjectContext = foo;
我经常会缩短类中的名称以及像 @synthesize managedObjectContext=_moc;
作为个人偏好 - 防止我的一些代码因长名称而换行。但保留了冗长且更具可读性的界面。
关于objective-c - 具有核心数据和表格 View 的 Apple 模板 iOS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574300/