可能重复:
C 点(".")运算符中的箭头运算符( - >)用法
和箭头(" - >")运算符用于C与Objective-C
我是一个新手,看着2008年最新更新的免费软件/开源程序,我不承认->以下符号:
- (id)copyWithZone:(NSZone *)zone
{
GFIPGeniusItem * newItem = [[[self class] allocWithZone:zone] init];
newItem->_stringValue = [_stringValue copy];
newItem->_imageURL = [_imageURL copy];
newItem->_webResourceURL = [_webResourceURL copy];
newItem->_speakableStringValue = [_speakableStringValue copy];
newItem->_soundURL = [_soundURL copy];
return newItem;
}
Run Code Online (Sandbox Code Playgroud)
我假设它允许某种捷径,但我特别喜欢它的功能.
这是一种从该对象外部直接访问ObjC对象中的实例变量的方法.(语法和->借用于C结构,表现就好像引用是指向结构的指针).
这种访问机制在这一点上几乎是退化的,并且在现代ObjC代码中非常罕见,因为良好的封装需要使用访问器和属性,而不是直接触及实例变量.但是在一些非常特殊的情况下它是合法的,这是其中之一:
复制对象时,您希望获得与当前状态完全匹配的结果副本self.实现此目的的最简洁方法通常是明确设置副本的ivars,以防止init重载或访问器可能导致的任何副作用.它是"安全的",因为执行它的代码仍然位于有问题的类中,因此如果您需要更改或添加ivars,您可以使用其他可能需要的知识更新此代码.
在课堂外面这样做是不好的形式,并没有充分的理由去做.
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |