2013-10-20 36 views
0

使用Objective C++文件在C++类中使用Objective C对象是否存在任何缺点(性能或其他)?例如,如直接的NSString像这样使用目标C类型之间的差异:与使用标准库C++字符串和包裹它们变成NSString的事后在C++类(.mm文件)中使用Objective C对象/类型的任何缺点?

class Hello { 
private: 
    NSString *text; 

public: 
    Hello() { this->text = @"Hello, world!"; 
    ~Hello(); 
    NSString* helloWorld() { return this->text; } 
}; 

。是否有任何直接使用Objective C“类型”的原因较差?我听说有人建议保持Objective C和C++尽可能分离,我希望听到这背后的理由。无论哪种方式,我都会隐藏C++类的Objective C接口,无论从.m文件中调用它。

回答

0

我不认为性能有任何问题,但是我不清楚为什么要将Objective-C对象封装在C++对象中。

保持C++纯粹C++的一个原因是,它可以与其他C++对象进行交互,一旦包含Objective-C对象,就不再可能与其他C++对象进行交互。

为了让一个C++对象与一个嵌入式Objective-C对象一起被另一个C++类使用(它需要“看到”头文件)我想你必须使用void *或者其他的东西。

+0

你能用一个模板创建一个C++类,然后从'.mm'中使用一个Objective C对象吗?如'vector ' –

+0

@pk_nb但是为什么? 'NSArray'已经涵盖了。 – trojanfoe

+0

这只是一个(不好)的例子。我正在考虑用C++编写一个二叉树(希望保持通用),并将其与Objective C对象一起使用。 –