什么是&在ObjC?

时间:2013-11-08 04:35:27

标签: c++ objective-c

真的很晚了。如果您能告诉我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];
    }
}

3 个答案:

答案 0 :(得分:1)

一个例子值得千言万语......

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

答案 1 :(得分:1)

没有直接的等价物。来自C ++的&表示reference type并且具有为同一变量创建基本上不同名称的特定含义,并允许您将整数等内容传递给函数并允许被调用者直接修改调用者的版本

ObjC不允许这种确切的语义。一般来说,你想要回归传统的C方式,通过引用传递,即使用指针。你在ObjC中编写遍历方法的方式是这样的 - 你传入一个你在别处创建的数组,它会填充它。

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

答案 2 :(得分:0)

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