ObjC 中的 & 等价物是什么?

What is the equivalent of & in ObjC?

本文关键字:是什么 等价物 中的 ObjC      更新时间:2023-10-16

真的晚了。如果您能告诉我 Objective-C 相当于 C++ 的,我将不胜感激:

&var1

在 ObjC 中。当我在C++代码中使用它时,我使用的代码是 var1;

我认为应该是

**var1

还是我弄错了?

编辑:

C++ 代码:

void getHierarchy(Vector<T*> &hierarchy) {
    for(int i = 0; i < childs.size(); i++) {
        childs[i]->getHierarchy(hierarchy);
    }
}

ObjC 中的代码:

-(void) getHierarchy: (NSMutableArray **) hierarchy {
    [*hierarchy addObject:self];
    for (T *child in [self childs]) {
        [child getHierarchy:*hierarchy];
    }
}

没有直接的等价物。来自 C++ 的&指示引用类型,并且具有为同一变量创建本质上不同的名称的特定含义,并允许您将整数等内容传递到函数中,并允许被调用方直接修改调用方的版本。

ObjC 不允许这种确切的语义。通常,您希望回退到传统的 C 引用传递方式,即使用指针。你在 ObjC 中编写遍历方法的方式是这样的——你将传入你在其他地方创建的数组,它会填充它。

- (void)addToHierarchy:(NSMutableArray *)hierarchy
{
    [hierarchy addObject:self];
    for (T * child in [self children]) {
        [child addToHierarchy:hierarchy];
    }
}
一个例子

胜过数千个单词...

    NSError *error = nil;
NSArray *result = [moc executeFetchRequest:req error:&error];
if (!result && error) {
    NSLog(@"DAO :: banks --> %@", error);
    return nil;
}

在 objective-C 中,相当于 C 的 & 仍然是&的,并且具有完全相同的行为。