在Objective-C中何时/何处使用箭头符号" - >"?

Sta*_*ich 8 objective-c notation

我刚刚清楚地解释了" - >"符号的含义:Dot(".")运算符和箭头(" - >")运算符在C与Objective-C中的使用

但我仍然不明白Objective-C中这种表示法的实际用例是什么?

以下是我所说的例子:https://github.com/gnustep/gnustep-base/blob/master/Source/NSOperation.m - 为什么所有这些字符串如internal-> lock都写在那里 - 为什么不只是使用ivars或dot-notation?


相关主题:object_setClass()的性能,而不是分配isa指针.

Chu*_*uck 7

从您的问题来看,您是否了解->运营商的行为并不清楚.

在在GNUstep的NSOperation源即例如使用的ivar.这就是->运算符的作用 - 它取消引用指针并访问指定的成员.

至于"为什么不使用点符号?" 显而易见的答案是他们不想通过访问者.通过访问器比直接访问慢,并且在这样的情况下没有真正的好处,我们只是处理"哑"内部状态.

那么什么时候应该在Objective-C代码中使用它?主要是当您通过指针访问结构时.很少需要直接访问另一个对象的实例变量.如果这样做,那么代码就是例外,而不是规则.

  • 您通常可以在类方法中使用它来以更快的速度初始化已分配的实例,即.不调用-init,特别是因为类可以访问其实例的私有属性. (2认同)