我有一个C++对象 - 对象obj
我想一个块中访问:使用C++ - 在Objective-C块
MyCppClass obj;
void(^myBlock)() = ^{
obj.test();
};
这里的问题是,obj
被复制成块,但我想要使用对原始对象的引用。我可以用一个指针代替:
MyCppClass obj;
MyCppClass *objP = &obj;
void(^myBlock)() = ^{
objP->test();
};
但我认为解引用指针比使用引用需要更多的时间。 (性能很关键,因为在我的项目中,这样一个块被称为大图像的每个像素。)
如何访问块内的对象?
“取消引用指针比使用引用需要更多时间”我无法想象这怎么可能。对于关键性能代码,您可能会发现使用C++ 11 lambda可以使其更快,因为它可以被编译器内联 –
为什么您认为解引用指针需要更多时间?你有没有分析,看看是否有重大的不同?复制整个对象可能比传递指针要昂贵得多,并且使用引用本质上是一样的。 –
我担心,当使用指针时,编译器不能优化代码,因为它不知道实际对象相对于该块具有固定的内存偏移量。由于在这种情况下我不知道如何使用引用,所以我无法测试和比较性能。 –