我有一個C++對象 - 對象obj
我想一個塊中訪問:使用C++ - 在Objective-C塊
MyCppClass obj;
void(^myBlock)() = ^{
obj.test();
};
這裏的問題是,obj
被複製成塊,但我想要使用對原始對象的引用。我可以用一個指針代替:
MyCppClass obj;
MyCppClass *objP = &obj;
void(^myBlock)() = ^{
objP->test();
};
但我認爲解引用指針比使用引用需要更多的時間。 (性能很關鍵,因爲在我的項目中,這樣一個塊被稱爲大圖像的每個像素。)
如何訪問塊內的對象?
「取消引用指針比使用引用需要更多時間」我無法想象這怎麼可能。對於關鍵性能代碼,您可能會發現使用C++ 11 lambda可以使其更快,因爲它可以被編譯器內聯 –
爲什麼您認爲解引用指針需要更多時間?你有沒有分析,看看是否有重大的不同?複製整個對象可能比傳遞指針要昂貴得多,並且使用引用本質上是一樣的。 –
我擔心,當使用指針時,編譯器不能優化代碼,因爲它不知道實際對象相對於該塊具有固定的內存偏移量。由於在這種情況下我不知道如何使用引用,所以我無法測試和比較性能。 –