我刚刚清楚解释了什么“ - >”符号就在这里:Dot (".") operator and arrow ("->") operator use in C vs. Objective-C
但是我仍然不明白 Objective-C中这种表示法的用例是什么?
以下是我所谈论的例子:https://github.com/gnustep/gnustep-base/blob/master/Source/NSOperation.m - 为什么所有这些字符串如 internal-> lock 都写在那里 - 为什么不使用ivars或dot-符号
相关主题:Performance of object_setClass() instead of assigning isa pointer。
答案 0 :(得分:7)
从您的问题来看,目前尚不清楚您是否了解->
运算符的作用。
使用ivar在GNUStep NSOperation源中的示例是。这就是->
运算符的作用 - 它取消引用指针并访问指定的成员。
至于“为什么不使用点符号?”显而易见的答案是他们不想通过访问者。通过访问器比直接访问慢,并且在这样的情况下没有真正的好处,我们只是处理“哑”内部状态。
那么什么时候应该在Objective-C代码中使用它?主要是当您通过指针访问结构时。很少需要直接访问另一个对象的实例变量。如果这样做,那么代码就是例外,而不是规则。
答案 1 :(得分:0)
可能就是这种情况。我在apple的Reachability.m文件中看到了一个例子。这是:
@implementation Reachability
{
SCNetworkReachabilityRef _reachabilityRef;
}
+ (instancetype)reachabilityWithHostName:(NSString *)hostName
{
...
if (reachability != NULL)
{
returnValue= [[self alloc] init];
if (returnValue != NULL)
{
returnValue->_reachabilityRef = reachability;
}
...
}
return returnValue;
}
因此,您可以使用它通过类方法中的对象调用全局变量。