很明显,@synthesize为对象定义了setter和getter。@合成“_”符号
但目前尚不清楚对我说:
@synthesize managedObjectContext = _managedObjectContext;
是什么意思?为什么不以这种方式实现它:
@synthesize managedObjectContext;
这似乎更容易?
另外,它是否与懒惰的编程有关,这意味着你必须自己编写setter和getter?
希望有人可以帮助;)
很明显,@synthesize为对象定义了setter和getter。@合成“_”符号
但目前尚不清楚对我说:
@synthesize managedObjectContext = _managedObjectContext;
是什么意思?为什么不以这种方式实现它:
@synthesize managedObjectContext;
这似乎更容易?
另外,它是否与懒惰的编程有关,这意味着你必须自己编写setter和getter?
希望有人可以帮助;)
这只是一个约定人们用它来给财产和伊娃名字不同。该物业将被称为managedObjectContext
,iVar将被称为_managedObjectContext
。
如果他们都被命名为相同,那么将它们混淆可能相当容易,而将它们混合起来可能会产生意想不到的结果,因为使用iVar名称将绕过该属性上的任何setter和getter。
除此之外,它没有实际功能。
那么我应该什么时候以这种方式实施呢?因为通常我们只是简单地将它合成为后者,例如@synthesize certainButton; – JackieLam 2013-05-03 15:37:52
另外,它是否与懒惰的编程有关,这意味着你必须自己编写setter和getter? – JackieLam 2013-05-03 15:38:43
@JackieLam认为它更像一种方便而不是规则。它只是将iVar重命名为使它更难以混淆两者,它使iVar或属性的功能完全没有区别。比较一下ObjectiveC中的缩进,这对于可读性很方便,很多人都这样做,但是在代码的功能上没有任何区别。 – 2013-05-03 15:39:26
你不需要再合成了,因为xcode 4.2(?),它会被隐式添加为'@sythesize foo = _foo;'所以最懒惰的编程就是不合成和使用下划线。但不检查文档不是懒惰的编程 - 这太懒惰了。 – vikingosegundo 2013-05-03 15:54:37