何时/何处箭头符号“ - >”应该在Objective-C中使用?

时间:2013-03-15 18:26:06

标签: objective-c notation

我刚刚清楚解释了什么“ - >”符号就在这里: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

2 个答案:

答案 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;
}

因此,您可以使用它通过类方法中的对象调用全局变量。