Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c “预支”是否有好处;“自我”;到钥匙道?_Objective C_Cocoa_Key Value Observing - Fatal编程技术网

Objective c “预支”是否有好处;“自我”;到钥匙道?

Objective c “预支”是否有好处;“自我”;到钥匙道?,objective-c,cocoa,key-value-observing,Objective C,Cocoa,Key Value Observing,我看到许多键路径被指定为self.someProperty,而不仅仅是someProperty。这样做有好处吗?这两个关键路径等效吗 编辑:我说的是键路径字符串,例如在绑定中使用的,发送到observeValueForKeyPath:,或从键路径返回的,保存值影响值forKey:您是指使用值forKey:/设置值:forKey:还是直接根据以下两者之间的差异: var = 8; self.var = 8; 假设是后者,区别在于前者直接存储值,即C风格,而后者调用setter(或getter,取

我看到许多键路径被指定为
self.someProperty
,而不仅仅是
someProperty
。这样做有好处吗?这两个关键路径等效吗


编辑:我说的是键路径字符串,例如在绑定中使用的,发送到
observeValueForKeyPath:
,或从
键路径返回的,保存值影响值forKey:

您是指使用
值forKey:
/
设置值:forKey:
还是直接根据以下两者之间的差异:

var = 8;
self.var = 8;
假设是后者,区别在于前者直接存储值,即C风格,而后者调用setter(或getter,取决于上下文)

调用该方法基本上不需要花费任何费用就可以解决该问题,但它的优点是:

  • 属性是关键值;及
  • 您可以向集合中添加任何其他处理逻辑。但除此之外:子类也可以,这样您的类就可以在大型项目中成为更好的公民

编辑:如果是前者,那么,不,没有行为上的优势,但我想在自己身上使用键值编码是一件非常不寻常的事情,它有一个让它看起来不寻常的好处?

您谈论的是属性引用,但使用的是术语keypath,这在KVC中有意义。非常令人困惑……如果您的意思是经常看到这一点:
[self-valueForKeyPath:@“self.someProperty”]
,那么我会说不,这样做没有好处,甚至会降低可读性。那么实例变量的默认命名呢?实例变量不会被称为
\u var
?对不起,我不清楚;我说的是
valueForKey
关键路径,据我所知,
var
self.var
是同一回事。这是真的吗?
var
self.var
可能是同一回事。如果您使用
@synthesis var进行合成那么是的,它们是。。。但是你也可以
@synthesis var=\u var
,在这种情况下,
self.var
\u var
是相同的东西。因为合成导致创建实例变量,所以有些人希望在它前面加下划线。