我刚刚清楚地解释了这里的"->"符号是什么:点(".")操作符和箭头("->")操作符在C和Objective-C中的使用
但是我仍然不明白这个符号在Objective-C中的真正用例是什么?
这里是我正在谈论的例子:https://github.com/gnustep/gnustep-base/blob/master/Source/NSOperation.m -为什么所有这些字符串,如内部->锁都写在那里-为什么不直接使用ivars或点符号?
相关主题:object_setClass()的性能而不是分配一个指针。
从你的问题来看,不清楚你是否理解->
操作符的作用。
GNUStep NSOperation源中的示例是使用ivar的。这就是->
操作符的作用——对指针解引用并访问指定成员。
至于"为什么不使用点表示法?"显而易见的答案是他们不想通过访问器。通过访问器比直接访问要慢,在这种情况下,我们只是在处理"愚蠢的"内部状态,没有真正的好处。
那么在Objective-C代码中何时应该使用它呢?主要是当你通过指针访问一个结构时。很少需要直接访问另一个对象的实例变量。
可能就是这种情况。我在苹果的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;
}
所以你可以用它来调用一个全局变量在一个类方法中的对象