ObjC 中的 & 等价物是什么?
What is the equivalent of & in ObjC?
真的晚了。如果您能告诉我 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 的 &
仍然是&
的,并且具有完全相同的行为。