0

真的很晚了。如果您能告诉我什么是 C++ 的 Objective-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];
    }
}
4

3 回答 3

1

没有直接的等价物。来自 C++ 的那个&表示引用类型,并且对于为同一个变量创建本质上不同的名称具有特定的含义,并允许您将整数之类的东西传递给函数,并允许被调用者直接修改调用者的版本。

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

- (void)addToHierarchy:(NSMutableArray *)hierarchy
{
    [hierarchy addObject:self];
    for (T * child in [self children]) {
        [child addToHierarchy:hierarchy];
    }
}
于 2013-11-08T04:43:40.880 回答
1

一个例子胜过千言万语……

    NSError *error = nil;
NSArray *result = [moc executeFetchRequest:req error:&error];
if (!result && error) {
    NSLog(@"DAO :: banks --> %@", error);
    return nil;
}
于 2013-11-08T04:40:21.233 回答
0

Objective-C 中的 C 等价物&仍然&具有完全相同的行为。

于 2013-11-08T04:39:24.753 回答